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

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

# coding: utf-8

import xmpp

class 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

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/other/o2618.html

相关文章 Recommend

python聊天机器人源码_Python Google talk聊天机器人源码相关推荐

  1. python爬虫常见报错_Python爬虫常见HTTP响应状态码详解

    在使用Python进行网页数据抓取时,经常会遇到无数据返还或错误等异常,这个时候可以通过status_code命令来查看获得http请求返回的状态码,以便查找原因并制定相应的解决方案.import r ...

  2. python聊天室详细教程_python简单实现聊天室功能(代码教程)

    聊天室程序需求: 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 这里我们首先要 ...

  3. python求平方根的代码_Python求平方根(附带源码)

    对于求一个浮点数的平方根,可以使用库函数,如 math.sqrt().但在本节,为了演示浮点数的一些用法,我们用下面的迭代法来求某个数的平方根. 其基本原理如下,对于一个浮点数 a,其平方根一定在 1 ...

  4. python爬取图片源码_python抓取百度图片源码

    #!/usr/bin/python # -*- coding:utf-8 -*- import httplib2 import urllib.request import json #import u ...

  5. python调用通达信函数_python获取通达信基本数据源码

    1.安装python,执行以下脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod a ...

  6. python爬虫代码实例源码_python 淘宝爬虫示例源码(抓取天猫数据)

    爬取淘宝 天猫网站数据# -*- coding: utf-8 -*- #!/usr/bin/env Python import dateTime import URLparse import sock ...

  7. python猴子吃桃递归_Python猴子吃桃题源码​:请问第一天摘了多少桃?

    猴子吃桃 有一只小猴子,摘了很多桃 第1天吃了全部桃子的一半,感觉不饱又吃了一个 第2天吃了剩下的一半,感觉不饱又吃了一个 ... 以此类推 到第10天,发现只剩一个了 请问第一天摘了多少桃? 代码 ...

  8. python判断素数的函数_Python素数prime函数练习_Python源码实操

    Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...

  9. python之父面试谷歌_Python之父Guido Rossum:打造Google第三大開發語言-经管之家官网!...

    Python之父Guido Rossum:打造Google第三大開發語言 酷勤網 23-Jan-10 IT人物 2009年4月1日凌晨,Guido van Rossum(吉多•範羅蘇姆)在Python ...

最新文章

  1. PHP成为首个在内核中嵌入加密库的编程语言
  2. 全球及中国梦幻体育软件和平台行业十四五规模展望及应用价值分析报告2021-2027年
  3. 【深度学习】同款商品识别的克星--ArcFace!
  4. mysql5.718解压版安装_MySQL v5.7.18 版本解压安装
  5. C++用libcurl通过HTTP以表单的方式Post数据到服务器
  6. 限时促销_江北恒一乐优家丨限时优惠大促销
  7. CAA创建自定义CATIA工具栏按钮和菜单
  8. 【学堂在线数据挖掘:理论方法笔记】第二天(3.18)
  9. 联想微型计算机 y720,联想拯救者Y720评测:有颜值的实力派
  10. hping 详解_HPing3构造多种类型DDOS攻击使用详解
  11. php与drupal,什么是Drupal
  12. Uml 类图 stereotype的值含义,该怎么解决
  13. 用标准遗传算法求函数最大值
  14. ad Hoc打包测试
  15. 互联网公司招聘黑话大全
  16. 哲学家都干了什么_编码和道德规范,为什么科技市场需要哲学家
  17. 通过submit提交的表单怎么实现ajax提交
  18. html5 百度收录,百度网站收录教程(个人版)
  19. linux电子相册登录界面代码,Linux项目开发—电子相册
  20. 无线充线圈的一些特性

热门文章

  1. php artisan command,artisan command 小技巧
  2. php artisan实现机制,源码解读:php artisan serve
  3. 国考特殊专业职位证监计算机类,报考2018年国考证监会,这些事情你要知道!...
  4. beyondcompare连接服务器
  5. 29.顺时针打印矩阵
  6. 计算机核心显卡,电脑核心组件之显卡如何选择
  7. ESO和滑模的一些讨论
  8. 我的世界服务器背景音乐修改,我的世界怎么修改音乐 我的世界音乐修改方法教程...
  9. EasyWord的使用——POI操作Word的工具
  10. java opts utf 8_Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8