微信已经成了中国人生活中基本的通讯工具(除了那些自由开源人士以外),前两天发现微信机器人的项目,其实早就有了。想着自己也做一个吧,顺便加了一些小小的功能。

释放我的机器人

微信扫一扫加他,跟他尬聊吧,把他拽到群里调戏他。

qrcode.jpg

具体功能下面会介绍。

工具

  • 手机

    微信登陆必须得有手机端登陆才能使用网页登陆,因为要扫一扫

  • Python 平台

    该项目基于 Python 开发,所以至少得来个嵌入式的开发板,或者电脑,或者...云服务器 ;-),如果要保证长时间开启与话,最好使用云服务器。

开发微信机器人

该项目基于 Github 上的 wxpy,使用文档在 这里。中文版的,所以我就不介绍这个怎么使用了。简单描述一下

创建机器人

from wxpy import *
bot = Bot()

注册消息回复

机器人对好友、群聊中 at 他的人进行回复,在群聊中同时统计每个人的发言次数和第一次发言的时间,将这些信息实时存储在本地,以防程序错误导致数据丢失。

消息回复中的机器人使用 图灵机器人, 可免费申请 API,调用他。也可以使用 小 I 机器人。这两个都是深度整合在项目里的。

@bot.register([Friend, Group])
def reply_friend(msg):"""消息自动回复"""print(msg)if isinstance(msg.chat, Group):group = msg.chat.namename = msg.member.nameif group in stat:if name in stat[group]['count']:stat[group]['count'][name] += 1else:stat[group]['count'][name] = 1flag = Truefor rank in stat[group]['rank']:if name == rank['name']:flag = Falsebreakif flag:stat[group]['rank'].append({'name': name, 'time': time.strftime("%H:%M:%S", time.localtime())})else:stat[group] = {"count": {name: 1}, 'rank': [{'name': name, 'time': time.strftime("%H:%M:%S", time.localtime())}, ]}if msg.text == "发言排行榜":g = bot.groups().search(group)[0]if not stat[g.name]:returnmsg_text = ""index = 1count = stat[g.name]['count']for name in sorted(count, key=lambda x: count[x], reverse=True):# print("{}: {} {}".format(index, rank['name'], rank['time']))msg_text += "{}: {} 发言了 {} 次\n".format(index, name, count[name])index += 1if msg_text:msg_text = "发言排行榜:\n" + msg_textg.send(msg_text)if msg.text == "起床排行榜":g = bot.groups().search(group)[0]if not stat[g.name]:returnmsg_text = ""index = 1for rank in stat[g.name]['rank']:# print("{}: {} {}".format(index, rank['name'], rank['time']))msg_text += "{}: {} {}\n".format(index, rank['name'], rank['time'])index += 1if msg_text:msg_text = "起床排行榜:\n" + msg_textg.send(msg_text)with open('stat.json', 'w') as fh:fh.write(json.dumps(stat))if not msg.is_at:returnreturn tuling_auto_reply(msg)

自动接受好友申请

@bot.register(msg_types=FRIENDS)
def auto_accept_friends(msg):"""自动接受好友请求"""# 接受好友请求new_friend = msg.card.accept()# 向新的好友发送消息new_friend.send('哈哈,我们现在是超级好的好朋友了呢~~')

添加计划任务

光回复怎么够,还要做一些小小的有趣的功能,我这里添加了两个统计,一个是起床时间统计,另一个是发言统计。

当天群聊的用户第一次发言作为起床时间,虽然有些不严谨,但毕竟功能是受限制的。

然后每天的 9 点发布一次起床排行榜, 20 点发布一次发言排行榜。当然其实主动发送 “起床排行榜”、“发言排行榜” 也会回复当前的排行。

起床排行榜

rank_getup.jpg

发言排行榜

rank_speak.jpg

实现

class ScheduleThread(threading.Thread):"""计划任务线程"""def run(self):global schedule_timeglobal botglobal statwhile 1:time.sleep(300)cur_hour = time.strftime("%H", time.localtime())# print("cur:{}\tschedule:{}".format(cur_hour, schedule_time))if cur_hour == schedule_time:continueelif cur_hour == '09':for group in bot.groups():print(group.name)if not stat[group.name]:continuemsg_text = ""index = 1for rank in stat[group.name]['rank']:# print("{}: {} {}".format(index, rank['name'], rank['time']))msg_text += "{}: {} {}\n".format(index, rank['name'], rank['time'])index += 1if msg_text:msg_text = "排行日报\n起床排行榜:\n" + msg_textgroup.send(msg_text)elif cur_hour == '20':for group in bot.groups():print(group.name)if not stat[group.name]:continuemsg_text = ""index = 1count = stat[group.name]['count']for name in sorted(count, key=lambda x: count[x], reverse=True):# print("{}: {} {}".format(index, rank['name'], rank['time']))msg_text += "{}: {} 发言了 {} 次\n".format(index, name, count[name])index += 1if msg_text:msg_text = "排行日报\n发言排行榜:\n" + msg_textgroup.send(msg_text)elif cur_hour == '00':stat = dict()with open('stat.json', 'w') as fh:fh.write('')schedule_time = cur_hour

聊聊

展示两个机器人互相尬聊的情况是怎么样的。

chat.jpg

部署

创建机器人时添加一个 console_qr 参数, True 时表示在终端显示二维码,False 表示用图片程序打开二维码。按情况来,如果在没有界面的云服务器上,那就在终端打开,如果只能连 tty ,那最好的办法就是生成一张图片,放到指定的 FTP 或者云盘目录,然后本地打开扫描,或者建个简单的 HTTP 服务器展示图片,方法很多,根据自己情况来吧。

原文地址:一个简单有趣的微信聊天机器人
我的博客:时空路由器

一个简单有趣的微信聊天机器人相关推荐

  1. 部署一个基于ChatGPT的微信聊天机器人以及产生的思考

    文章目录 前言 功能 反响 思考 这篇文章主要展示了基于ChatGPT的微信聊天机器人的效果,以及在部署过程中我产生的一些思考.部署一个这样的机器人的具体方法我过两天会单独写一篇文章. 前言 最近几个 ...

  2. html5图灵机器人自动会话代码,Vue结合图灵机器人制作的一个简单的仿微信聊天的自动回复机器人...

    HTML5模拟微信聊天界面 /**重置标签默认样式*/ * { margin: 0; padding: 0; list-style: none; font-family: '微软雅黑' } #cont ...

  3. 自己动手用Android和Xposed编写一个微信聊天机器人——《微信聊天精灵》实现关键词自动回复。

    出于爱好和需要,想着自己来编写一个微信聊天机器人,能实现以下功能: 能实时获取到微信聊天消息: 能进行文本自动回复: 能够设置关键词: 能够根据关键词匹配,进行内容回复: 能实现聊天消息云端备份: 已 ...

  4. 用wxpy做一个微信聊天机器人(详解)

    用python写一个微信聊天机器人可以利用python中的wxpy库或者itchat模块,我在网上看到好多都是使用的itchat,但是我这里使用的是wxpy库,wxpy 在 itchat 的基础上,通 ...

  5. 教你3分钟打造一个专属微信聊天机器人

    3分钟打造专属于你的微信聊天机器人 语言:Python IDE: 这个不做要求,使用PyCharm / Visual Studio Code 等等均可 前提: 需要先搭建好python环境,版本2.7 ...

  6. python微信聊天机器人_python实战项目,使用itchat模块制作微信聊天机器人

    前言 对于咱们热爱折腾的青年来说,经常会有很多好玩的新奇创意想法,可是,有时候就缺少一个接口,实现交互.比如说,咱们博客的 python实战项目,有些的确比较好玩,但是似乎只能在电脑上跑跑程序,怎么运 ...

  7. 基于图灵api实现微信聊天机器人

    基于图灵api实现微信聊天机器人 尝试了一下最近很火的聊天机器人,记录下实现过程. 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给 ...

  8. python接入微信_使用python接入微信聊天机器人

    本文实例为大家分享了python接入微信聊天机器人的具体代码,供大家参考,具体内容如下 1.安装库wxpy: pip install -U wxpy or pip install -U wxpy -i ...

  9. 微信公号 DIY:一小时搭建微信聊天机器人

    最近借用了女朋友的公号,感觉如果只是用来发文章,太浪费微信给提供的这些功能了.想了想,先从最简单的开始,做一个聊天机器人吧. 使用Python实现聊天机器人的方案有多种:AIML.chatterBot ...

最新文章

  1. mysql整理类型_Mysql 时间类型整理
  2. 人工智能医疗的商业化困局
  3. java8 - 新的时间日期API示例
  4. C#向C++编写的DLL传递字符串参数的办法
  5. 23种设计模式及OOP7大原则
  6. 如何让listview或者gridview设置到底刷新新数据
  7. 关于SVN服务器的环境搭建及使用(转)
  8. [编程入门]宏定义的练习:输入两个整数,求他们相除的余数。用带参的宏来实现,编程序。
  9. 27岁博士毕业,32岁成清华博导!黄高助理教授:DenseNet发明者
  10. 基因治疗光明现,钾盐钠盐大混战;深度学习助力癌早筛,母亲多动降低后代甲基化...
  11. python如何处理spark上的数据_Pyspark获取并处理RDD数据代码实例
  12. PHP期望T_PAAMAYIM_NEKUDOTAYIM?
  13. Cping (cmd shell )版本
  14. DCMTK 查询 WorkList
  15. chrome浏览器市场占有率居第一 份额58.09%
  16. win10系统电脑点击桌面图标没反应怎么处理
  17. 走近棒球运动·堪萨斯城皇家队·MLB棒球创造营
  18. 基于SVG的绘制多边形jQuery插件
  19. matlab解坐标方程,matlab程序(解泊松方程)
  20. 竞赛练一练 第15期:电子学会2021年9月青少年软件编程(图形化)等级考试试卷(三级)...

热门文章

  1. BiliBili Android客户端仿写
  2. 电路开放性创新Multisim设计与理论验证
  3. 关于相机的一些参数计算(靶面、视野等)
  4. 本机mysql无法进行碎片整理有什么用_下列无法进行碎片整理的文件可以删除吗?...
  5. 中标麒麟v7桌面系统cups服务无法启动
  6. 2023计算机毕业设计SSM最新选题之java公司销售合同管理系统kvwra
  7. 计算机毕业设计选题火锅店预约平台系统
  8. Elasticsearch suggest
  9. reopen a pull-request after a force-push
  10. IBM小型机+Oracle数据库+EMC存储设备,IOE简介