Yes酱-会发涩图的群管理机器人
Yes酱-会发涩图的群管理机器人
✨ 基于 go-cqhttp,使用OneBot标准的插件 ✨
github项目地址:https://github.com/Yang9999999/Go-CQHTTP-YesBot
Go-CQHTTP-YesBot 是采用python编写,可拓展的,适合新手的入门级QQ机器人插件
目前拥有的功能
- 发送setu/猫猫图返回一张涩图/猫猫图
- 检测关键字禁言
- 私聊调教对话
发送huangse获得R18涩图- 更多功能待开发....
配置
配置信息在config.json中
{
"path":"/C:\\Users\\86175\\Desktop\\mybot\\pic\\mao\\",
"ban_words":["科学上网","黑产","翻墙"],
"apikey":"xxxxxxxxxxxxxxxx",
"group":[123456789,987654321],
"self_qq":"2013996860"
}
分别为
- 储存猫猫图的路径 Linux下为"/root/mybot1/pic/mao/"
- 禁言关键词
- 涩图API的apikey
- Yes酱管理的群号
- Yes酱的QQ号
API
- 机器人采用的涩图API
编写目的
用于python学习和交流
造福群友(不是)
示例
前言
本意是想造福一下群友想锻炼一下代码能力,于是就有了这个机器人
因为酷Q已经死亡,机器人的入门门槛变高,找了好久最终发现go-cqhttp是比较好用的
写的不好,功能也不是很完善,大佬轻喷呀~
项目地址https://github.com/Yang9999999/Go-CQHTTP-YesBot
How to start?
首先需要下载go-cqhttp,它的文档里有详细的下载步骤,所以这里不在赘述。
启动也很简单,windows直接双击,Linux直接./go-cqhttp就可以了
重要的是配置信息,这里给出我的配置信息供大家参考
/*
go-cqhttp 默认配置文件
*/
{
// QQ号
uin: 2013996860
// QQ密码
password: "xxxxxxxx"
// 是否启用密码加密
encrypt_password: false
// 加密后的密码, 如未启用密码加密将为空, 请勿随意修改.
password_encrypted: ""
// 是否启用内置数据库
// 启用将会增加10-20MB的内存占用和一定的磁盘空间
// 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
enable_db: true
// 访问密钥, 强烈推荐在公网的服务器设置
access_token: ""
// 重连设置
relogin: {
// 是否启用自动重连
// 如不启用掉线后将不会自动重连
enabled: true
// 重连延迟, 单位秒
relogin_delay: 3
// 最大重连次数, 0为无限制
max_relogin_times: 0
}
// API限速设置
// 该设置为全局生效
// 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
// 目前该限速设置为令牌桶算法, 请参考:
// https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
_rate_limit: {
// 是否启用限速
enabled: false
// 令牌回复频率, 单位秒
frequency: 1
// 令牌桶大小
bucket_size: 1
}
// 是否忽略无效的CQ码
// 如果为假将原样发送
ignore_invalid_cqcode: false
// 是否强制分片发送消息
// 分片发送将会带来更快的速度
// 但是兼容性会有些问题
force_fragmented: false
// 心跳频率, 单位秒
// -1 为关闭心跳
heartbeat_interval: 0
// HTTP设置
http_config: {
// 是否启用正向HTTP服务器
enabled: true
// 服务端监听地址
host: 0.0.0.0
// 服务端监听端口
port: 5700
// 反向HTTP超时时间, 单位秒
// 最小值为5,小于5将会忽略本项设置
timeout: 0
// 反向HTTP POST地址列表
// 格式:
// {
// 地址: secret
// }
post_urls:
{
"127.0.0.1:5701": secret
}
}
// 正向WS设置
ws_config: {
// 是否启用正向WS服务器
enabled: true
// 正向WS服务器监听地址
host: 0.0.0.0
// 正向WS服务器监听端口
port: 6700
}
// 反向WS设置
ws_reverse_servers: [
// 可以添加多个反向WS推送
{
// 是否启用该推送
enabled: false
// 反向WS Universal 地址
// 注意 设置了此项地址后下面两项将会被忽略
// 留空请使用 ""
reverse_url: ws://127.0.0.1:5701
// 反向WS API 地址
reverse_api_url: ws://127.0.0.1:5701
// 反向WS Event 地址
reverse_event_url: ws://127.0.0.1:5701
// 重连间隔 单位毫秒
reverse_reconnect_interval: 3000
}
]
// 上报数据类型
// 可选: string array
post_message_format: string
// 是否使用服务器下发的新地址进行重连
// 注意, 此设置可能导致在海外服务器上连接情况更差
use_sso_address: false
// 是否启用 DEBUG
debug: false
// 日志等级
log_level: ""
// WebUi 设置
web_ui: {
// 是否启用 WebUi
enabled: true
// 监听地址
host: 127.0.0.1
// 监听端口
web_ui_port: 9999
// 是否接收来自web的输入
web_input: false
}
}
配置完成时,启动go-cqhttp,再运行main.py就可以开始获取涩图啦
要注意在config.json中要设置好相关信息。
当然欢迎大家二次创作~~
请问博主,这个exe程序下载时并没有附带在里面,是通过安装go环境用go build 指令编译得到的吗?如果是,那是build的那个.go文件呢?如能回复不胜感激!
不好意思我大意了,没用TZ去看文档。第一次用github对文件下载还是太生疏了。冒然提问,实在抱歉。 ⌇●﹏●⌇
没事鸭~欢迎提问 :huaji25:
配置完成config.json后,
运行main.py显示:
./main.py: line 1: from: command not found
./main.py: line 2: from: command not found
./main.py: line 3: from: command not found
./main.py: line 5: syntax error near unexpected token `('
./main.py: line 5: `talker = msg_talker()'
请问是什么问题
python3 main.py
运行python3 main.py会提示
pyenv: python3: command not found
The `python3' command exists in these Python versions:
3.6.8
Note: See 'pyenv help global' for tips on allowing both
python2 and python3 to be found.
这又是什么问题,麻烦大佬了
要先安装python3.7
大佬您好,请问:
①上报Event数据 {"anonymous":null,"font":0,"group_id":1043369239,"message":"我还在刷初始","message_id":2142378548,"message_type":"group","post_type":"message","raw_message":"我还在刷初始","self_id":778893485,"sender":{"age":0,"area":"","card":"吃货","level":"","nickname":"全能吃货不挑食","role":"member","sex":"unknown","title":"猫猫","user_id":1470934350},"sub_type":"normal","time":1612444195,"user_id":1470934350} 到 127.0.0.1:5701 失败: Post "http://127.0.0.1:5701": net/http: HTTP/1.x transport connection broken: unexpected EOF
②[2021-02-04 21:10:57] [WARNING]: 群消息发送失败: 信息为空. MSG:
这两个问题怎么解决呢?感谢您的分享,这是唯一一个我成功运行的机器人
第一个属于正常现象,不用管。
第二个问题建议单步调试一下,看看MSG为什么为空。
感谢提问! :huaji20:
好像在删除words里没有的语句的时候会炸掉 :lei: :lei:
我这里测试的没有问题呀~可以自行打断点调试一下看看为什么 :huaji26:
出现start然后该咋办?
start说明脚本正在运行,可以尝试与机器人对话看是否运行正常
大佬我start之后 机器人就莫得反应了 ⌇●﹏●⌇
是需要另外开启5701端口吗?
可能是配置没调对,5701端口一定得打开
为什么我的猫猫图回复的不是图片[CQ:image,file=file://E:\NPC_Gocqhttp\pic\mao0DEE3C4C2AE7A02C39C86F1E0F618B6A.png]
可能是config.json中path的格式不对,看下我的格式,照着修改一下
上报Event数据 {"interval":5000,"meta_event_type":"heartbeat","post_type":"meta_event","self_id":32016096,"status":{"app_enabled":true,"app_good":true,"app_initialized":true,"good":true,"online":true,"plugins_good":null,"stat":{"packet_received":17,"packet_sent":12,"packet_lost":0,"message_received":0,"message_sent":0,"disconnect_times":0,"lost_times":0,"last_message_time":0}},"time":1614147127} 到 127.0.0.1:5710 失败: Post "http://127.0.0.1:5710": dial tcp 127.0.0.1:5710: connectex: No connection could be made because the target machine actively refused it.
大佬这是怎么回事啊
属于正常现象
大佬,我运行main.py文件出现这种情况怎么回事啊
Traceback (most recent call last):
File "D:\qq机器人\Go-CQHTTP-YesBot-master\main.py", line 3, in
from massage_flide import msg_talker
File "D:\qq机器人\Go-CQHTTP-YesBot-master\massage_flide.py", line 4, in
from send_message.talk_to_user import *
File "D:\qq机器人\Go-CQHTTP-YesBot-master\send_message\talk_to_user.py", line 1, in
from send_message.word_detect import *
File "D:\qq机器人\Go-CQHTTP-YesBot-master\send_message\word_detect.py", line 5, in
group = json.load(open("./config.json", encoding='utf-8'))["group"]
File "C:\Users\MagicBook\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Users\MagicBook\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\MagicBook\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\MagicBook\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid \escape: line 2 column 48 (char 49)
可能是路径有问题,推荐用vscode或者pycharm打开文件夹
好使了,感谢大佬
大佬,为什么输入猫猫图main就崩了
也许是路径没设置对。
做了个docker版本,需要自取 ∠( ᐛ 」∠)_
https://hub.docker.com/r/zhengfan2014/yesbot
赞
已加入GitHub描述
运行main.py出现:
Traceback (most recent call last):
File "main.py", line 4, in
from massage_flide import msg_talker
File "/www/wwwroot/qqbot/function/Go-CQHTTP-YesBot-master/massage_flide.py", line 3, in
from data.load_data import read_file
ImportError: No module named data.load_data
可能是更改文件位置造成的,可以放windows调试下排查一下
File "main.py", line 4, in
from massage_flide import msg_talker
File "/home/go/massage_flide.py", line 3, in
from data.load_data import read_file
请问这个怎么解决
[WARNING]: 上报Event到 HTTP 服务器 127.0.0.1:5701 时出现错误: Post "http://127.0.0.1:5701": net/http: HTTP/1.x transport connection broken: unexpected EOF 将重试.
而且一发信息Yesbot就会退出
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
[WARNING]: 上报Event到 HTTP 服务器 127.0.0.1:5701 时出现错误: Post "http://127.0.0.1:5701": dial tcp 127.0.0.1:5701: connect: connection refused 将重试.
啊这,打个断点调试一下吧
我是centos系统跑的,要怎么调试
Traceback (most recent call last):
File "main.py", line 19, in
talker.private_msg(rev)
File "/home/qqbot/Go-CQHTTP-YesBot-master/massage_flide.py", line 19, in private_msg
return send_message(talk_to_user(rev, self.talk_data), rev["user_id"], "private")
File "/home/qqbot/Go-CQHTTP-YesBot-master/send_message/send_message.py", line 24, in send_message
if rev.json()['status'] == 'ok':
File "/usr/local/python3/lib/python3.7/site-packages/requests/models.py", line 900, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/local/python3/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/usr/local/python3/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/python3/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
找到问题了,加了token导致的 (ó﹏ò。)
[WARNING]: 上报Event数据 {"interval":5000,"meta_event_type":"heartbeat","post_type":"meta_event","self_id":3193432727,"status":{"app_enabled":true,"app_good":true,"app_initialized":true,"good":true,"online":true,"plugins_good":null,"stat":{"packet_received":38,"packet_sent":29,"packet_lost":0,"message_received":2,"message_sent":0,"disconnect_times":0,"lost_times":0,"last_message_time":1617010109}},"time":1617010130}
到 127.0.0.1:5701 失败: Post "http://127.0.0.1:5701": net/http: HTTP/1.x transport connection broken: unexpected EOF
[2021-03-29 17:28:55] [WARNING]: 上报Event到 HTTP 服务器 127.0.0.1:5701 时出现错误: Post "http://127.0.0.1:5701": net/http: HTTP/1.x transport connection broken: unexpected EOF 将重试.
[2021-03-29 17:28:55] [WARNING]: 上报Event数据 {"interval":5000,"meta_event_type":"heartbeat","post_type":"meta_event","self_id":3193432727,"status":{"app_enabled":true,"app_good":true,"app_initialized":true,"good":true,"online":true,"plugins_good":null,"stat":{"packet_received":38,"packet_sent":29,"packet_lost":0,"message_received":2,"message_sent":0,"disconnect_times":0,"lost_times":0,"last_message_time":1617010109}},"time":1617010135}
大佬这可怎么办啊
这个是正常的。
请问cqhttp那边加了token,yesbot这边要怎么配置
搞定了,request里面加了个header
大佬,我两边都正常运行为什么qq群里没有反应,config也设置了,qq1930774374
额,依然不是很会,楼主的config已经是几个版本前的了,不能复制粘贴运行,照着改了后也并无效果,只是start了,但给bot发消息也没反应。望楼主不吝赐教 (ó﹏ò。) :a:
我的bot没问题,一直在运行。。如果觉得是版本问题可以点开cqhttp release下载旧版试试。不过感觉应该版本影响不大
楼主能确切说一下用的哪个版本的吗,上午试过一个0.9.38的 ,但是cqhttp报错了emmm,对socket还不是很理解。没看懂报错什么意思 (ó﹏ò。)
目前就是能收到消息,但post不出去
能跑了/ _ \,代码也看了几遍 可以二次开发了。。
怎么做到能跑啊 我现在还是你之前说的 只是start了 毫无反应
go-cqhttp-v0.9.37-fix1-linux-amd64.tar.gz
楼主用什么跑的啊,我放自己电脑虚拟机跑了两天。看了看服务器 都tm好贵啊 有无推荐 (
学生机
单步调试一下。。。看看哪里处理的有问题
群内@机器人 加 猫猫图 不会报错终终止程序但就是不出猫猫图
local_img_url = "[CQ:image,file="+path+choice(setu_list)+"]"
# local_img_url = "[CQ:image,file=file://"+path+choice(setu_list)+"]"
这是我做的修改 path = “E://pic//mao//
大佬知道这是怎么回事么?
另外我想基于这个开发一个功能就是 @机器人+含关键字的消息 机器人@群管理@发消息的人 回复他发送的内容 然后存储一个含有发送人qq id 发送内容 及时间的json 不知道能不能实现呢?
(我觉得是不懂CQ这个语法的锅
ps.私聊功能测试正常
可以python代码单步调试一下
大佬,cqhttp更新了,反向post好像没用了,能帮忙测试新版看看吗
大佬,为啥发了违禁词不会禁言呀,已经给了管理员了
大佬
Traceback (most recent call last):
File "main.py", line 2, in
from send_message.send_message import send_message
File "C:\Users\1\Desktop\新建文件夹 (3)\新建文件夹\Go-CQHTTP-YesBot-master\sen
d_message\send_message.py", line 1, in
import requests
ModuleNotFoundError: No module named 'requests'
是什么情况
大佬,最新版的cqhttp用这个bot只有私聊有反应,qq群没反应了
大佬有qq群吗
不错