Advertisement
Guest User

Untitled

a guest
Sep 17th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 21.11 KB | None | 0 0
  1. from __future__ import division
  2. from math import ceil
  3. from twisted.words.protocols import irc
  4. from twisted.internet import protocol
  5. from twisted.internet import reactor
  6. import random
  7.  
  8.  
  9. #gonna restart on this here is cur source
  10.  
  11. #give owner more privs, such as forceing votes, forcing leaves etc, maybe give half op so can kick grifers
  12. #start >force command, maybe scrap it
  13. #start >end command
  14. #maybe a >help command for spastics
  15. #read commands, descriptions etc from a xml file
  16. #fix bugs and tidy code
  17. #add colors
  18. #split,killed and lynched, maybe 2d dict
  19. #timeout maybe
  20.  
  21. server = 'irc.echonode.com'
  22. channel = '#wolf'
  23.  
  24. oper_pass = ''
  25. ns_pass = ''
  26.  
  27. min_players = 4
  28. min_players_2_wolves = 7
  29. max_players = 12
  30.  
  31. roles = {1:'Nigger',2:'Cop',3:'Housewife'}
  32.  
  33. commands = {'lynch':'>lynch','see':'>raid','kill':'>rape'}
  34.  
  35. roles_left = {1:'They left behind a empty bucket of kfc and a half eaten watermelon.',
  36.             2:'They left behind a empty box of donuts.',
  37.             3:'Nothing of value was lost.'}
  38.  
  39. roles_objective = {1:'Your objective is to blend in with the rest of suburbia, once a night,',
  40.                         2:'Your objective is to determine the identity of any %s hiding in suburbia, once a night,' % roles.get(1,None),
  41.                         3:'Your objective is to decide upon who you think is a %s.' % roles.get(1,None)
  42.                 }
  43.                
  44. #role is reminded at night, maybe sca
  45. roles_ability = {1:'you must use %s TARGET to rape a housewife.' % commands.get('kill',None),
  46.             2:'you must use %s TARGET to determine the targets real identity.' % commands.get('see',None),
  47.             3:'Try not to get raped'
  48.             }
  49.  
  50.  
  51. game_intro = ['This is a game of justified paranoia and great truth.  Everyone in this group appears to be a common white suburban housewife, but several of you are \'special\'. One or two of you are actually genuine chicken eating niggers, seeking to rape everyone and everything while concealing their identity.',
  52. 'And one of you is also a \'cop\'; you have the ability to learn whether a specific person is or is not a nigger in disguise.',
  53. 'As a community, your group objective is to weed out the niggers and lynch them like back in the good ol days, before you\'re all raped in your sleep'
  54. ]
  55.  
  56. night_end = 'The night has ended, suburbia awakens to find the dead raped body of:'
  57. night_begin = 'Night time begins in suburbia, everyone sleeps peacfully but niggery is afoot'
  58.  
  59. cant_kill_self = 'You cannot rape yourself.'
  60. cant_kill_wolf = 'You cannot rape another nigger.'
  61.  
  62. cant_see_self = 'You cannot raid yourself'
  63.  
  64. enough_2_wolves = 'There are enough players for 2 niggers'
  65. two_wolves = 'There are two niggers in this game the other nigger is:'
  66.  
  67. lynch_begin = 'Suburbia has made its decision, and has decided to lynch:'
  68.  
  69. #do the even thing? going with determining what roles are left, for added lulz and dickery
  70. wolf_win = 'Suburbia has been thoroughly raped, niggers rein supreme and now no longer hide... there goes the neighborhood.'
  71. village_win = 'Suburbia has been saved and is now rid of all niggers, the suburban dream is safe... for now.'
  72.  
  73. #do the even thing? going with determining what roles are left, for added lulz and dickery
  74. wolf_win = 'All the viullagers in the village have been murdered, wolves rein supreme and now no longer hide... all thats left is empty buildings remnants of what this village used to be'
  75. village_win = 'The vilalge has been saved and is now rid of all wolves, the villagers are safe... for now.'
  76.  
  77. class WolfBot(irc.IRCClient):
  78.    
  79.     def _get_nickname(self):
  80.         return self.factory.nickname
  81.    
  82.     nickname = property(_get_nickname)
  83.  
  84.     def signedOn(self):
  85.         self.sendLine('OPER %s' % oper_pass)
  86.         self.mode(self.factory.nickname,True,'BH',None,None,None)
  87.         self.msg('Nickserv','id %s' % ns_pass)
  88.         self.msg('Operserv', 'set superadmin on')
  89.         self.join(self.factory.channel)
  90.        
  91.     def player_gone(self,user,channel):
  92.         user = user.lower()
  93.         if self.game_schedule:
  94.             del self.players[user]
  95.             self.msg(channel,'%s just disappeared, nothing of value was lost' % user)
  96.         elif self.game:
  97.             role_num = self.players.get(user, None)
  98.             del self.players[user]
  99.             self.msg(channel,'%s just disappeared, %s was a %s, %s' % (user,user,roles[role_num],roles_left[role_num]))
  100.             if role_num == 1:
  101.                 self.wolves.remove(user)
  102.                 if self.wolves and not self.lynch_time:
  103.                     self.wolf_target = None
  104.                     self.killed = False
  105.                     try:
  106.                         del self.wolf_targets[user]
  107.                     except KeyError, e:
  108.                         pass
  109.                     else:
  110.                         #means there was 2, one remains.
  111.                         other_wolf = self.wolves[0]
  112.                         if self.wolf_targets.get(other_wolf,None) == None:
  113.                             self.msg(other_wolf,'Your fellow %s %s has disappeared, continue choosing your target' % (roles[1],user))
  114.                         else:
  115.                             self.msg(other_wolf,'Your fellow %s %s has disappeared, confirm your target' % (roles[1],user))
  116.  
  117.             elif role_num == 2:
  118.                 self.seer = None
  119.  
  120.             if not self.check_winner(channel):
  121.                 if not self.lynch_time:
  122.                     #fix wolf target dissapearing
  123.                     if user == self.wolf_target or user in self.wolf_targets.values(): #hope dont throw error
  124.                         self.killed = False
  125.                         self.wolf_target = None
  126.                         if len(self.wolves) == 2:
  127.                             for k, v in self.wolf_targets.iteritems():
  128.                                 if v == user:
  129.                                     self.wolf_targets[k] = None
  130.                                     self.msg(k,'Your target of choice has disappeared, select a new target')
  131.                         else:
  132.                             self.msg(self.wolves[0],'Your target of choice has disappeared, select a new target')
  133.                            
  134.                 else:
  135.                     #fix votes here
  136.                     if user in self.not_voted:
  137.                         self.not_voted.remove(user)
  138.                     else:
  139.                         #lower the person who they voted fors tally:
  140.                         self.vote_dict[self.player_vote[user]] -= 1
  141.                         del self.player_vote[user]
  142.                     #give the people who voted for user their vote back and append them to self.not_voted, remove them from vote_dict
  143.                     if self.vote_dict[user] > 0:
  144.                         #could listcomp it
  145.                         people = []
  146.                         for k, v in self.player_vote.iteritems():
  147.                             if v == user:
  148.                                 #give the people who voted for user there vote back, and inform them/channel
  149.                                 self.not_voted.append(k)
  150.                                 people.append(k)
  151.                                 self.player_vote[k] = None #bad?
  152.                         self.msg(channel,'Because %s disappeared, the following people who voted for them, must vote again: %s' % (user,', '.join(people)) )
  153.  
  154.                     del self.vote_dict[user]
  155.                     #lower self.majority
  156.                     self.majority -= 1
  157.    
  158.         if user == self.owner: #need to tie this in with line 101 somehow
  159.             self.owner = random.choice(self.players.keys())
  160.             self.msg(channel,'%s was the game owner, %s has become the owner now' % (user,self.owner))
  161.            
  162.         #self.check_winner
  163.    
  164.     def assign_roles(self,channel):
  165.         if len(self.players) >= min_players_2_wolves:
  166.             self.msg(channel,enough_2_wolves)
  167.             self.wolves = random.sample(self.players.keys(),3)
  168.         else:
  169.             self.wolves = random.sample(self.players.keys(),2)
  170.        
  171.         self.seer = random.choice(self.wolves)
  172.         self.wolves.remove(self.seer)
  173.        
  174.         self.mode(channel,True,'m',None,None,None)
  175.         self.mode(channel,True,'v' * len(self.players),None,' '.join([i for i in self.players.keys()]),None)
  176.  
  177.         for player in self.players.keys():
  178.             #self.mode(channel,True,'v',None,player,None)
  179.             if player == self.seer:
  180.                 self.players[player] = 2
  181.             elif player in self.wolves:
  182.                 self.players[player] = 1
  183.             else:
  184.                 self.players[player] = 3
  185.             role_num = self.players.get(player, None)
  186.             self.msg(player,'You are a %s. %s' % (roles[role_num],roles_objective[role_num]))
  187.        
  188.         for line in game_intro:
  189.             self.msg(channel,line)
  190.        
  191.         self.night_begin()
  192.        
  193.     def night_begin(self):
  194.         self.owner_force = False
  195.         self.lynch_time = False
  196.         self.killed = False
  197.         if self.seer:
  198.             self.seen = False
  199.         else:
  200.             self.seen = True
  201.         for player, role_num in self.players.iteritems():
  202.             self.msg(player,roles_ability.get(role_num,None))
  203.             if role_num == 1 and len(self.wolves) == 2:
  204.                 self.msg(player,'%s %s, you must agree on the same targets.' % (two_wolves,self.get_other_wolf(player)))
  205.  
  206.         self.msg(self.factory.channel,night_begin)
  207.        
  208.     def check_night_finished(self):
  209.         channel = self.factory.channel
  210.         if self.seen and self.killed:
  211.             self.mode(channel,False,'v',None,self.wolf_target,None)
  212.             self.msg(channel,'%s %s' % (night_end, self.wolf_target))
  213.             role_num = self.players[self.wolf_target]
  214.             self.msg(channel,'%s was a confirmed %s. %s' % (self.wolf_target,roles[role_num],roles_left[role_num]))
  215.             self.dead.append(self.wolf_target)
  216.             self.msg(channel,'The following players have been killed: %s ...,may they R.I.P' % ', '.join(self.dead))
  217.             self.msg(channel,'As a community your objective now is to use %s TARGET to cast your vote on who you beleive the %s is.' % (commands['lynch'],roles[1]))
  218.            
  219.             self.msg(self.wolf_target,'You are now dead and can no longer take part in this current game.')
  220.             del self.players[self.wolf_target]
  221.             if role_num == 2:
  222.                 self.seer = None
  223.            
  224.             if not self.check_winner(channel):     
  225.                 self.lynch_time = True
  226.                 self.wolf_target = None
  227.                 self.wolf_targets = {}
  228.                
  229.                 self.not_voted = self.players.keys()
  230.                 self.vote_dict = {i:0 for i in self.not_voted}
  231.                 self.player_vote = {}
  232.                
  233.                 num_players = len(self.players)
  234.                 if num_players%2==0:
  235.                     self.majority = int((num_players / 2) + 1)
  236.                 else:
  237.                     self.majority = int(ceil(num_players / 2))
  238.            
  239.  
  240.     def update_vote(self,nick,target,channel):
  241.         self.msg(channel,'%s has vote for %s' % (nick,target))
  242.         #msg current vote tally
  243.         self.msg(channel,'Current votes: %s, a majority of %s is needed' % (', '.join(['%s:%s' % (k,v) for k, v in self.vote_dict.iteritems() if v > 0]),self.majority))
  244.         #if waiting on people to vote:
  245.         if self.not_voted:
  246.             self.msg(channel,'Waiting for: %s to vote.' % ', '.join(self.not_voted))
  247.             #temp till timeout and owner commands
  248.             if not self.check_votes(channel):
  249.                 print 'fix'
  250.         else:
  251.             #check majority vote
  252.             if not self.check_votes(channel):
  253.                 self.msg(channel,'Voteing stalemate, either come to a majority decision or %s can now use >force' % self.owner)
  254.  
  255.    
  256.     def check_votes(self,channel):
  257.         winner = [k for k, v in self.vote_dict.iteritems() if v >= self.majority]
  258.         if winner:
  259.             self.lynch(winner[0],channel)
  260.             return True
  261.         else:#need the else?
  262.             return False
  263.    
  264.     def lynch(self,target,channel):
  265.         self.mode(channel,False,'v',None,target,None)
  266.         self.msg(channel,'%s %s' % (lynch_begin,target))
  267.         role_num = self.players[target]
  268.         self.msg(channel,'after examining the remains of %s everyone learns that %s was a %s. %s' % (target,target,roles[role_num],roles_left[role_num]))
  269.        
  270.         if role_num == 1:
  271.             self.wolves.remove(target)
  272.         elif role_num == 2:
  273.             self.seer = None
  274.         #refresh variables
  275.         del self.players[target]       
  276.        
  277.         if not self.check_winner(channel):
  278.             self.night_begin()
  279.        
  280.     def check_winner(self,channel):
  281.         if not self.wolves:
  282.             self.msg(channel,village_win)
  283.             self.game_fin(channel)
  284.             return True
  285.         elif len(self.wolves) >= len([k for k, v in self.players.iteritems() if v != 1]):
  286.             self.msg(channel,wolf_win)
  287.             self.game_fin(channel)
  288.             return True
  289.         else:
  290.             return False
  291.            
  292.     def game_fin(self,channel):
  293.         #channel modes
  294.         if self.wolves:
  295.             if len(self.wolves) == 1:
  296.                 self.msg(channel,'%s was a %s' % (self.wolves[0],roles[1]))
  297.             else:
  298.                 self.msg(channel,'%s were %ss' % (' and '.join(self.wolves),roles[1]))
  299.         if self.seer:
  300.             self.msg(channel,'%s was a %s' % (self.seer,roles[2]))
  301.         self.mode(channel,False,'m',None,None,None)
  302.         self.mode(channel,False,'v' * len(self.players),None,' '.join([i for i in self.players.keys()]),None)
  303.        
  304.         #reset all variables to default shit
  305.         self.game = False
  306.         self.game_schedule = False
  307.         self.lynch_time = False
  308.         self.seen = False
  309.         self.killed = False
  310.         self.owner_force = False
  311.         self.dead = []
  312.         self.players = {}
  313.         self.wolf_targets = {}
  314.         self.wolf_target = None
  315.         self.owner = None
  316.        
  317.        
  318.     game = False
  319.     game_schedule = False
  320.     lynch_time = False
  321.     seen = False
  322.     killed = False
  323.     #used to track targets when more than one wolf
  324.     wolf_targets = {}
  325.     wolf_target = None
  326.     dead = []
  327.     owner = None #game owner/starter/founder
  328.     players = {}
  329.     owner_force = False
  330.    
  331.     def userLeft(self, user, channel):
  332.         if user in self.players:
  333.             self.player_gone(user,channel)
  334.            
  335.     def userQuit(self, user, quitMessage):
  336.         if user in self.players:
  337.             self.player_gone(user,self.factory.channel)
  338.        
  339.     def userKicked(self, user, channel, kicker, message):
  340.         if user in self.players:
  341.             self.player_gone(user,channel)
  342.  
  343.     def irc_NICK(self, user, params):
  344.         old_nick = user.split('!')[0].lower()
  345.         new_nick = params[0].lower()
  346.         if old_nick in self.players:
  347.             role = self.players[old_nick]
  348.             if role == 1:
  349.                 self.wolves[self.wolves.index(old_nick)] = new_nick
  350.                 self.wolf_targets[new_nick] = self.wolf_target[old_nick]
  351.                 del self.wolf_target[old_nick]
  352.             elif role == 2:
  353.                 self.seer = new_nick
  354.            
  355.             if old_nick == self.wolf_target:
  356.                 self.wolf_target = new_nick
  357.             if old_nick in self.wolf_targets.values():
  358.                 for k, v in self.wolf_targets.iteritems():
  359.                     if v == old_nick:
  360.                         self.wolf_targets[k] = new_nick
  361.            
  362.             del self.players[old_nick]
  363.             self.players[new_nick] = role
  364.            
  365.             #update votes etc
  366.             if self.lynch_time:
  367.                 if old_nick in self.not_voted:
  368.                     self.not_voted.remove(old_nick)
  369.                     self.not_voted.append(new_nick)
  370.                 else:
  371.                     self.player_vote[new_nick] = self.player_vote[old_nick]
  372.                     del self.player_vote[old_nick]
  373.                 #update vote count for this person
  374.                 self.vote_dict[new_nick] = self.vote_dict[old_nick]
  375.                 del self.vote_dict[old_nick]
  376.            
  377.             if old_nick == self.owner:
  378.                 self.owner = new_nick
  379.             self.notice(new_nick,'Tracked your nick change.')
  380.  
  381.     def privmsg(self, user, channel, msg):
  382.         nick = user.split('!')[0].lower()
  383.         command = msg.split(' ')[0].lower()
  384.         #needs to be faster :o
  385.         #could do handleing here maybe
  386.        
  387.         if command == '>join' and channel == self.factory.channel:
  388.             if self.game and nick in self.players:
  389.                 self.notice(nick,'You are already in the game in progress')
  390.             elif self.game and nick not in self.players:
  391.                 self.notice(nick,'You may not join a game in progress')
  392.             elif self.game_schedule and nick in self.players:
  393.                 self.notice(nick,'You have already joined')
  394.             elif self.game_schedule and nick not in self.players:
  395.                 self.msg(channel,'%s has just joined the game' % nick)
  396.                 self.players[nick] = None
  397.             else:
  398.                 self.notice(nick,'No game at the moment, use >start to begin one')
  399.                
  400.         elif command == '>leave' and channel == self.factory.channel:
  401.             if self.game and nick in self.players:
  402.                 self.notice(nick,'You cant leave a game in progress')
  403.             elif self.game and nick not in self.players:
  404.                 self.notice(nick,'You cant leave a game you\'re not a part of')
  405.             elif self.game_schedule and nick in self.players:
  406.                 del self.players[nick]
  407.                 self.notice(nick,'You have just left the game')
  408.             elif self.game_schedule and nick not in self.players:
  409.                 self.notice(nick,'You cant leave a game you\'re not a part of')
  410.             else:
  411.                 self.notice(nick,'No game at the moment, use >start to begin one')
  412.            
  413.         elif command == '>start' and channel == self.factory.channel:
  414.             #expand
  415.             if self.game or self.game_schedule:
  416.                 self.notice(nick,'Game already in progress')
  417.             else:
  418.                 self.game_schedule = True
  419.                 self.owner = nick
  420.                 self.players[nick] = None
  421.                 self.notice(nick,'You are the game owner, use >begin to begin the game one all players have joined')
  422.                 self.msg(channel,'%s has just started a new game, use >join to join!' % nick)
  423.                
  424.         elif command == '>begin' and channel == self.factory.channel:
  425.             if self.game:
  426.                 self.notice(nick,'Game already in progress')
  427.             elif nick != self.owner and self.game_schedule:
  428.                 self.notice(nick,'Only the game owner can begin the game, current owner: %s' % self.owner)
  429.             elif nick == self.owner and self.game_schedule:
  430.                 if len(self.players) < min_players:
  431.                     self.msg(channel,'Not enough players to begin the new game')
  432.                 else:
  433.                     self.game_schedule = False
  434.                     self.game = True
  435.                     self.msg(channel,'New game starting, assigining roles')
  436.                     self.assign_roles(channel)
  437.             elif not self.game_schedule:
  438.                 self.notice(nick,'No game at the moment, use >start to begin one')
  439.        
  440.         elif command == commands['lynch'] and channel == self.factory.channel:
  441.             if not self.lynch_time:
  442.                 self.notice(nick,'Now is not the time for that')
  443.             else:
  444.                 try:
  445.                     target = msg.split(' ')[1].lower()
  446.                 except IndexError, e:
  447.                     self.notice(nick,'No target given.')
  448.                 else:
  449.                     if target in self.players:
  450.                         if nick == target:
  451.                             self.notice(nick,'You cannot vote for yourself')
  452.                         elif nick in self.not_voted:
  453.                             self.not_voted.remove(nick)
  454.                             self.vote_dict[target] += 1
  455.                             self.player_vote[nick] = target
  456.                             self.notice(nick,'Vote set, current vote: %s' % target)
  457.                             self.update_vote(nick,target,channel)
  458.                         elif self.player_vote.get(nick,None) != target:
  459.                             self.vote_dict[self.player_vote[nick]] -= 1
  460.                             self.player_vote[nick] = target
  461.                             self.vote_dict[target] += 1
  462.                             self.notice(nick,'Vote updated, current vote: %s' % target)
  463.                             self.update_vote(nick,target,channel)  
  464.                         elif self.player_vote.get(nick,None) == target:
  465.                             self.notice(nick,'%s has already got your vote.' % target)
  466.                            
  467.                     elif target in self.dead:
  468.                         self.notice(nick,'You cannot vote for %s, since they are already dead' % target)
  469.                     else:
  470.                         self.notice(nick,'%s isn\'t playing' % target)
  471.  
  472.         elif command == commands['kill'] and channel == self.nickname:
  473.             if self.lynch_time and nick in self.wolves:
  474.                 self.msg(nick,'Now is not the time for that')
  475.             if not self.lynch_time and nick in self.wolves:
  476.                 if self.killed:
  477.                     if len(self.wolves) == 2:
  478.                         self.msg(nick,'You and the other %s have already decided on your target' % roles[1])
  479.                     else:
  480.                         try:
  481.                             target = msg.split(' ')[1].lower()
  482.                         except IndexError, e:
  483.                             self.msg(nick,'No target given')
  484.                         else:
  485.                             if target == nick:
  486.                                 self.msg(nick,cant_kill_self)
  487.                             elif target in self.dead:
  488.                                 self.msg(nick,'%s is already dead' % target)
  489.                             elif target in self.players:
  490.                                 self.msg(nick,'Target updated')
  491.                                 self.wolf_target = target
  492.                                 self.check_night_finished()
  493.                 else:
  494.                     try:
  495.                         target = msg.split(' ')[1].lower()
  496.                     except IndexError, e:
  497.                         self.msg(nick,'No target given')
  498.                     else:
  499.                         if target == nick:
  500.                             self.msg(nick,cant_kill_self)
  501.                         elif target in self.dead:
  502.                             self.msg(nick,'%s is already dead' % target)
  503.                         elif target in self.players and len(self.wolves) != 2:
  504.                             self.msg(nick,'Target set')
  505.                             self.wolf_target = target
  506.                             self.killed = True
  507.                             self.check_night_finished()
  508.                         elif target in self.wolves:
  509.                             self.msg(nick,cant_kill_wolf)
  510.                         elif target in self.players and len(self.wolves) == 2:
  511.                             self.msg(nick,'Target set')
  512.                             self.wolf_targets[nick] = target
  513.                             other_wolf = self.get_other_wolf(nick)
  514.                             if self.wolf_targets.get(other_wolf, None) == target:
  515.                                 self.msg('%s,%s' % (nick,other_wolf),'Target has been agreed on, no going back.') #sake of ease
  516.                                 self.wolf_target = target
  517.                                 self.killed = True
  518.                                 self.check_night_finished()
  519.                             elif self.wolf_targets.get(other_wolf, None) == None:
  520.                                 self.msg(nick,'%s hasn\'t chose a target yet' % other_wolf)
  521.                                 self.msg(other_wolf,'%s has just chosen %s as a target' % (nick,target))
  522.                             else:
  523.                                 self.msg(other_wolf,'%s has just chosen %s as a target' % (nick,target))
  524.                                 self.msg('%s,%s' % (nick,other_wolf),'You have both chosen different targets, you need to agree')
  525.                                
  526.                         else:
  527.                             self.msg(nick,'%s isn\'t playing' % target)
  528.                            
  529.         elif command == commands['see'] and channel == self.nickname:
  530.             if self.lynch_time and nick == self.seer:
  531.                 self.msg(nick,'Now is not the time for that')
  532.             elif not self.lynch_time and nick == self.seer:
  533.                 if self.seen:
  534.                     self.msg(nick,'You have already used your ability for tonight')
  535.                 else:
  536.                     try:
  537.                         target = msg.split(' ')[1].lower()
  538.                     except IndexError, e:
  539.                         self.msg(nick,'No target given')
  540.                     else:
  541.                         if target == nick:
  542.                             self.msg(nick,'%s...try again' % cant_see_self)
  543.                         elif target in self.dead:
  544.                             self.msg(nick,'%s is dead' % target)
  545.                         elif target in self.players:
  546.                             self.msg(nick,'%s is a confirmed %s' % (target, roles[self.players[target]]))
  547.                             self.seen = True
  548.                             self.check_night_finished()
  549.                         else:
  550.                             self.msg(nick,'%s isn\'t playing' % target)
  551.    
  552.     def get_other_wolf(self,user):
  553.         for wolf in self.wolves:
  554.             if wolf != user:
  555.                 return wolf
  556.    
  557.     def ctcpQuery(self, user, channel, messages):
  558.         print 'Faggot is ctcp\'in'
  559.  
  560.  
  561. class WolfBotFactory(protocol.ClientFactory):
  562.     protocol = WolfBot
  563.  
  564.     def __init__(self, channel, nickname='Wolf'):
  565.         self.channel = channel
  566.         self.nickname = nickname
  567.        
  568.     def clientConnectionLost(self, connector, reason):
  569.         connector.connect()
  570.        
  571.     def clientConnectionFailed(self, connector, reason):
  572.         print "Connection failure:", reason
  573.         reactor.stop()
  574.  
  575. if __name__ == '__main__':
  576.     reactor.connectTCP(server, 6667, WolfBotFactory(channel))
  577.     reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement