前言
因为班群里总是挺静的,所以想着要不放个机器人试试能不能活跃活跃气氛,然后就begin网上查阅资料试着建立个机器人。
语言环境开发环境:Ubuntu16.04
编程语言:Python2.7
步骤第一步:首先安装python2.7语言
sudo apt-get install python2.7
第二部:安装微信机器人所需要的python模块--wxpy,该项目基于 Github 上的 wxpy,想要了解更多的文档使用可以点击这里,里面有介绍。如果你使用的不是Python2.7的语言,可以将下方命令中的 "pip" 替换为 "pip3" 或 "pip2",可确保安装到对应的 Python 版本中,我的是Python2.7的版本 所以我的是pip2
安装方式1
从 PYPI 官方源下载安装 (在国内使用可能比较慢或不稳定):
pip2 install -U wxpy
安装方式2
从豆瓣 PYPI 镜像源下载安装 (建议国内用户使用):
pip2 install -U wxpy -i "https://pypi.doubanio.com/simple/"
第三部:去图灵机器人官网注册一个帐号,创建一个机器人。创建好后他会给我们一个APIkey。
第四部:在服务器上创建机器人登陆微信。先在服务器的命令行输入:python 进入运行python调试模式,然后创建机器人# 导入模块
from wxpy import *
# 初始化机器人,扫码登陆
bot = Bot(console_qr=True)为什么要在括号内加console_qr=True,因为部署在服务器终端上会显示不到二维码,所以可以通过参数来让二维码现实在终端内。详情可看这里
第五部:机器人注册消息回复。消息回复中的机器人可以使用 图灵机器人, 可免费申请 API,调用他。也可以使用 小 I 机器人。我用的是图灵机器人。所以调用的是图灵机器人的API,综合刚刚上面的登录,我们的调试代码可以写成from wxpy import *
bot = Bot(console_qr=True)
tuling = Tuling(api_key="你申请机器人的API")第六部:可以根据 wxpy 手册提供的的一些基本的注册消息代码添加需要的功能。比如 自动接受好友请求:# 注册好友请求类消息
@bot.register(msg_types=FRIENDS)
# 自动接受验证信息中包含 'wxpy' 的好友请求
def auto_accept_friends(msg):
# 判断好友请求中的验证文本
if 'wxpy' in msg.text.lower():
# 接受好友 (msg.card 为该请求的用户对象)
new_friend = bot.accept_friend(msg.card)
# 或 new_friend = msg.card.accept()
# 向新的好友发送消息
new_friend.send('哈哈,我自动接受了你的好友请求')
# 获取所有类型的消息(好友消息、群聊、公众号,不包括任何自己发送的消息)
# 并将获得的消息打印到控制台
@bot.register()
def print_others(msg):
print(msg)
# 回复 my_friend 发送的消息
@bot.register(my_friend)
def reply_my_friend(msg):
return 'received: {} ({})'.format(msg.text, msg.type)
# 回复发送给自己的消息,可以使用这个方法来进行测试机器人而不影响到他人
@bot.register(bot.self, except_self=False)
def reply_self(msg):
return 'received: {} ({})'.format(msg.text, msg.type)
# 打印出所有群聊中@自己的文本消息,并自动回复相同内容
# 这条注册消息是我们构建群聊机器人的基础
@bot.register(Group, TEXT)
def print_group_msg(msg):
if msg.is_at:
print(msg)
msg.reply(meg.text)
以上部分代码选自简书进行完以上代码可能会导致python退出,然后可以根据wxpy给出的使用embed()方法保持程序运行# 进入 Python 命令行、让程序保持运行
# 推荐使用
embed()
# 或者仅仅堵塞线程
# bot.join()
最后
因为我要在群里放个机器人,肯定不能选择自动回复所以消息,因为这样会影响到群的不友好。所以我的机器人是选择了回复好友和群里@AT机器人时在回复消息。from wxpy import *
bot = Bot(console_qr=True)
tuling = Tuling(api_key="你的机器人的key")
@bot.register([Friend, Group])
def reply_friend(msg):
"""
消息自动回复
"""
tuling.do_reply(msg)
return
return tuling.do_reply(msg)
@bot.register(Group, TEXT)
def print_group_msg(msg):
if msg.is_at:
tuling.do_reply(msg)
msg.reply(meg.text)
# 回复 my_friend 的消息 (优先匹配后注册的函数!)
@bot.register(my_friend)
def reply_my_friend(msg):
tuling.do_reply(msg)
return 'received: {} ({})'.format(msg.text, msg.type)
# 自动接受新的好友请求
@bot.register(msg_types=FRIENDS)
def auto_accept_friends(msg):
# 接受好友请求
new_friend = msg.card.accept()
# 向新的好友发送消息
new_friend.send('哈哈!我们现在是超级好的好朋友了呢~~~!,')
embed()
注意
因为这只是调试程序,好像我们以关闭命令行或者退出SSH就会发现机器人失效不起作用了。一开始被这个问题困扰着,百度也没找到答案,可能是我自己不知道要怎么搜索关键字。后来求助@后宫学长得到了一个解决的方案。
可以用screen来解决离开会话无法运行的问题 下载安装screen
apt-get -y install screen
安装好后在服务器上输入screen -S oneinstack (screen -S “任务名”)后会弹出新的窗口
然后我们在这个新的窗口来运行我们的Python的机器人,运行玩后测试机器人能不能聊天
没有问题的话我们依次按下CTRL +A+D,这样我们就退会原先的窗口了,这时候可以关闭服务器了,机器人也依然在运行着。
如果想关闭原来的窗口我们需要输入screen -R oneinstack重新回到那个新开的窗口,执行exit关闭后在回到主窗口关闭服务器。
发现
第一天的效果,大家都觉得很好奇。
但是但是...后来发现兴起这只是一时的罢了,过了没多久还是会安静滴滴····
不妨一起搭个机器人玩玩吧
欢迎骚扰 大白 :oops:
微信已被禁止网页端登录,大白··已经用不了
文章发布时间: Mar 10, 2018 at 02:23 pm
最后编辑时间: May 15, 2019 at 01:20 am