Python Google talk聊天机器人源码,python聊天机器人,Python编橙之家本文


Python编橙之家本文是关于依据xmpp封装的Jabber聊天机器人类。 并提供了Python Google talk聊天机器人源码供大家参考。这个python gtalk机器人是可以通过继承,并能重载部分函数来自定义功能。

Python gatalk机器人相关文章推荐:Python WebSocket服务端编程代码完成gtalk机器人

python gtalk机器人源码部分如下:

# coding: utf-8import 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))# www.iplaypy.com    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

编橙之家文章,

评论关闭