python gtalk机器人,pythongtalk,[Python]代码Py


[Python]代码

Python语言: python gtalk机器人# coding: utf-8## 这是根据xmpp封装的Jabber聊天机器人类, 可以通过继承,重载部分函数来自定义功能.# Jabber ID(JID): 比如gamcat@gmail.comimport xmppclass Bot:    """ Jabber Bot Base Class """    JID = ''    PASSWORD = ''    client = None       def __init__ (self, jid, password):        self.JID = xmpp.JID(jid)        self.PASSWORD = password        self.login()    def login (self):                 self.client = xmpp.Client(self.JID.getDomain(), debug=[])        if self.client.connect() == '':            raise 'JabberBot not connected.'        if self.client.auth(self.JID.getNode(), self.PASSWORD) == None:            raise 'JabberBot authentication failed.'        self.client.RegisterHandler('message', self.message_callback)        self.client.RegisterHandler('presence', self.presence_callback)        self.client.sendInitPresence()    def message_callback (self, client, message):        """ 默认消息回调(可通过继承自定义) """    def presence_callback (self, client, message):        """ 默认事件回调,包括下面几个(可通过继承自定义) """        type = message.getType()        who = message.getFrom().getStripped()        if type == 'subscribe':            self.subscribe(who)        elif type == 'unsubscribe':            self.unsubscribe(who)        elif type == 'subscribed':            self.subscribed(who)        elif type == 'unsubscribed':            self.unsubscribed(who)        elif type == 'available' or type == None:            self.available(message)        elif type == 'unavailable':            self.unavailable(who)    def subscribe (self, jid):        """ 加好友 """        self.client.send(xmpp.Presence(to=jid, typ='subscribed'))        self.client.send(xmpp.Presence(to=jid, typ='subscribe'))    def unsubscribe (self, jid):        """ 取消好友 """        self.client.send(xmpp.Presence(to=jid, typ='unsubscribe'))        self.client.send(xmpp.Presence(to=jid, typ='unsubscribed'))    def subscribed (self, jid):        """ 已加 """    def unsubscribed (self, jid):        """ 已退 """    def available (self, message):        """ 上线 """    def unavailable (self, jid):        """ 下线 """    def send (self, jid, message):        """ 发消息给某人"""        self.client.send(xmpp.protocol.Message(jid, message))    def step (self):        """ 用在循环中 """        try:            self.client.Process(1)        except KeyboardInterrupt:   # Ctrl+C停止            return False        return True#===========================# 测试#===========================class Bot(Bot):    def message_callback (self, cl, msg):        fromid = msg.getFrom().getStripped()        cont = msg.getBody()        self.send2admin(msg)    def send2admin (self, message):        self.send('admin@gmail.com', message)if __name__ == '__main__':    gb = Bot ('yourbot@gmail.com', '******')    gb.send2admin ('Bot Started')    # 开始运行    while (gb.step()): pass

评论关闭