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

Annotation of MumbleDicebot/peebot.py, Revision 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