python gtalk机器人,pythongtalk,[Python]代码Py
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
相关内容
- 导出邮箱里的联系人:支持Gmail,126,网易,搜狐,H
- windows平台下如何用Python杀进程,平台python,[Python]代码
- Python中按月增加datetime,pythondatetime,[Python]代码Py
- python3 短网址和数字的相互转换,python3相互转换,impor
- 命令行从dict.cn查单词,命令行dict.cn单词,[Python]代码P
- python url格式解析,pythonurl解析,from urlpars
- python让图片按照exif信息里的创建时间进行排序,,impo
- python beautifulsoup抓取小说练习,,学习beautifuls
- Softmax Regression,softmaxregression,from numpy i
- Heapsort,,#--coding: u
评论关闭