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