[BACK]Return to peebot.py CVS log [TXT][DIR] Up to [contributed] / MumbleDicebot

Annotation of MumbleDicebot/peebot.py, Revision 1.1.1.1

1.1       rubenllo    1: from twisted.python.rebuild import rebuild
                      2: import mumble_client as mc
                      3: import mumble_protocol as mp
                      4: import peebot
                      5: import re
                      6: import dice
                      7:
                      8: OWNER = "ruben"  # Your mumble nickname
                      9: SERVER_IP = "192.168.88.11"  # Server IP
                     10: SERVER_PORT = 64738  # Server PORT
                     11: USERNAME = "screwgoogle"  # Bot's name
                     12:
                     13: # Use empty string for optional fields to remove
                     14: PASSWORD = "no subestimes el poder de Iota"  # Optional password
                     15: CERTIFICATE = ""  # Optional certificate
                     16:
                     17:
                     18: class PeeBotClient(mp.MumbleClient):
                     19:     def connectionMade(self):
                     20:         mp.MumbleClient.connectionMade(self)
                     21:
                     22:         self.users = {}
                     23:         self.channels = {}
                     24:         self.session = 0
                     25:         self.channel = 0
                     26:         self.shutup = []
                     27:         self.follow = 0
                     28:         self.c_order = []
                     29:
                     30:     def reload(self):
                     31:         rebuild(mp)
                     32:         rebuild(peebot)
                     33:
                     34:     def reply(self, p, msg):
                     35:         if p.channel_id:
                     36:             self.send_textmessage(msg, channels=p.channel_id)
                     37:         else:
                     38:             self.send_textmessage(msg, users=[p.actor])
                     39:
                     40:     def handle_udptunnel(self, p):
                     41:         if self.users[p.session] in self.shutup:
                     42:             self.move_user(self.shutup_channel, p.session)
                     43:
                     44:     def handle_channelstate(self, p):
                     45:         if p.name:
                     46:             self.channels[p.channel_id] = p.name
                     47:
                     48:     def handle_userremove(self, p):
                     49:         # Remove user from userlist
                     50:         del self.users[p.session]
                     51:
                     52:     def handle_userstate(self, p):
                     53:         # Add user id to the userlist
                     54:         if p.name:
                     55:             self.users[p.session] = p.name
                     56:
                     57:         # Stores own session id
                     58:         if p.name == self.factory.nickname:
                     59:             self.session = p.session
                     60:
                     61:         if p.session == self.session:
                     62:             self.channel = p.channel_id
                     63:
                     64:         # Follows user around
                     65:         if self.users[p.session] == self.follow:
                     66:             if p.channel_id:
                     67:                 self.move_user(p.channel_id, self.session)
                     68:             elif p.self_mute:
                     69:                 self.mute_or_deaf(self.session, True, True)
                     70:             else:
                     71:                 self.mute_or_deaf(self.session, False, False)
                     72:
                     73:     def handle_textmessage(self, p):
                     74:
                     75:
                     76:         # Reload the script
                     77:         if p.message == "/reload":
                     78:             self.reload()
                     79:             print "Reloaded!"
                     80:
                     81:         if re.match('^/roll (.+)$', p.message):
                     82:             try:
                     83:                 self.reply(p, str(dice.roll(re.search('^/roll (.+)$', p.message).group(1)+"+0")))
                     84:             except dice.DiceBaseException as e:
                     85:                 print(e.pretty_print())
                     86:
                     87:         # Only listen to the owner
                     88:         if self.users[p.actor] != OWNER:
                     89:             return
                     90:
                     91:         if p.message.startswith("/change"):
                     92:             channel = p.message.split(' ')[-1]
                     93:             self.move_user(int(channel), self.session)
                     94:
                     95:         # List the channels in the console
                     96:         elif p.message.startswith("/channels"):
                     97:             print self.channels
                     98:
                     99:         # List the users in the console
                    100:         elif p.message.startswith("/users"):
                    101:             print self.users
                    102:
                    103:
                    104: if __name__ == '__main__':
                    105:     factory = mc.create_client(peebot.PeeBotClient, USERNAME, PASSWORD)
                    106:     mc.start_client(factory, SERVER_IP, SERVER_PORT, certificate=CERTIFICATE)

CVSweb