Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from twisted.words.protocols import irc
- from twisted.internet import protocol, reactor
- class VoteBot(irc.IRCClient):
- voted_users_set = set()
- picks = {'1':0, '2':0}
- def _get_nickname(self):
- return self.factory.nickname
- nickname = property(_get_nickname)
- def _check_and_process_command(self, user, msg):
- msg_parts = msg.split()
- if len(msg_parts) == 2:
- command, choice = msg_parts
- if command == "!vote":
- if user not in self.voted_users_set:
- try:
- self.picks[choice] += 1
- self.voted_users_set.add(user)
- except KeyError:
- pass
- def signedOn(self):
- print "Signed on as {}.".format(self.nickname)
- self.join(self.factory.channel)
- def joined(self, channel):
- print "Joined {}.".format(channel)
- def privmsg(self, user, channel, msg):
- print msg
- self._check_and_process_command(user, msg)
- print self.picks
- print self.voted_users_set
- class VoteBotFactory(protocol.ClientFactory):
- protocol = VoteBot
- def __init__(self, channel, nickname='VoteBot'):
- self.channel = channel
- self.nickname = nickname
- def clientConnectionLost(self, connector, reason):
- print "Lost connection ({}), reconnecting.".format(reason)
- connector.connect()
- def clientConnectionFailed(self, connector, reason):
- print "Could not connect: []".format(reason)
- if __name__ == "__main__":
- channel = sys.argv[1]
- reactor.connectTCP('irc.network.net', 6666, VoteBotFactory(channel))
- reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement