Yes酱-会发涩图的群管理机器人

·
随便写写 no tag January 28, 2021

go-cqhttp

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学习和交流

造福群友(不是)

示例

image.png

image.png

image.png

前言

本意是想造福一下群友想锻炼一下代码能力,于是就有了这个机器人

因为酷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中要设置好相关信息。

当然欢迎大家二次创作~~

  • CTF中的登录框
  • 合成德克萨斯

已有 60 条评论
  1. 柠檬茶

    请问博主,这个exe程序下载时并没有附带在里面,是通过安装go环境用go build 指令编译得到的吗?如果是,那是build的那个.go文件呢?如能回复不胜感激!

    柠檬茶 January 31st, 2021 at 07:09 pm回复
  2. 柠檬茶

    不好意思我大意了,没用TZ去看文档。第一次用github对文件下载还是太生疏了。冒然提问,实在抱歉。 ⌇●﹏●⌇

    柠檬茶 January 31st, 2021 at 07:28 pm回复
    1. Yang_99

      没事鸭~欢迎提问 :huaji25:

      Yang_99 February 2nd, 2021 at 10:49 am回复
  3. 小黑白

    配置完成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()'
    请问是什么问题

    小黑白 February 2nd, 2021 at 06:58 pm回复
    1. Yang_99

      python3 main.py

      Yang_99 February 2nd, 2021 at 07:10 pm回复
      1. 小黑白

        运行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.
        这又是什么问题,麻烦大佬了

        小黑白 February 2nd, 2021 at 07:53 pm回复
        1. Yang_99

          要先安装python3.7

          Yang_99 February 2nd, 2021 at 09:08 pm回复
  4. felicity12345

    大佬您好,请问:
    ①上报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:
    这两个问题怎么解决呢?感谢您的分享,这是唯一一个我成功运行的机器人

    felicity12345 February 4th, 2021 at 09:12 pm回复
    1. Yang_99

      第一个属于正常现象,不用管。
      第二个问题建议单步调试一下,看看MSG为什么为空。
      感谢提问! :huaji20:

      Yang_99 February 4th, 2021 at 10:37 pm回复
  5. pr

    好像在删除words里没有的语句的时候会炸掉 :lei: :lei:

    pr February 6th, 2021 at 01:02 pm回复
    1. Yang_99

      我这里测试的没有问题呀~可以自行打断点调试一下看看为什么 :huaji26:

      Yang_99 February 6th, 2021 at 03:05 pm回复
  6. 贝贝

    出现start然后该咋办?

    贝贝 February 8th, 2021 at 12:08 am回复
    1. Yang_99

      start说明脚本正在运行,可以尝试与机器人对话看是否运行正常

      Yang_99 February 8th, 2021 at 08:07 pm回复
      1. cilicili

        大佬我start之后 机器人就莫得反应了 ⌇●﹏●⌇

        cilicili February 23rd, 2021 at 04:02 pm回复
        1. cilicili

          是需要另外开启5701端口吗?

          cilicili February 23rd, 2021 at 04:10 pm回复
        2. Yang_99

          可能是配置没调对,5701端口一定得打开

          Yang_99 February 23rd, 2021 at 07:37 pm回复
  7. 阿斯顿撒

    为什么我的猫猫图回复的不是图片[CQ:image,file=file://E:\NPC_Gocqhttp\pic\mao0DEE3C4C2AE7A02C39C86F1E0F618B6A.png]

    阿斯顿撒 February 18th, 2021 at 06:57 am回复
    1. Yang_99

      可能是config.json中path的格式不对,看下我的格式,照着修改一下

      Yang_99 February 18th, 2021 at 10:38 pm回复
  8. liu

    上报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.
    大佬这是怎么回事啊

    liu February 24th, 2021 at 02:14 pm回复
    1. Yang_99

      属于正常现象

      Yang_99 February 25th, 2021 at 12:31 am回复
  9. liu

    大佬,我运行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)

    liu February 25th, 2021 at 08:30 am回复
    1. Yang_99

      可能是路径有问题,推荐用vscode或者pycharm打开文件夹

      Yang_99 February 25th, 2021 at 05:35 pm回复
      1. liu

        好使了,感谢大佬

        liu February 26th, 2021 at 11:42 am回复
  10. 1111

    大佬,为什么输入猫猫图main就崩了

    1111 March 4th, 2021 at 12:51 pm回复
    1. Yang_99

      也许是路径没设置对。

      Yang_99 March 4th, 2021 at 05:49 pm回复
  11. asda

    做了个docker版本,需要自取 ∠( ᐛ 」∠)_
    https://hub.docker.com/r/zhengfan2014/yesbot

    asda March 10th, 2021 at 05:53 pm回复
    1. Yang_99

      赞

      Yang_99 March 15th, 2021 at 11:18 am回复
    2. Yang_99

      已加入GitHub描述

      Yang_99 March 15th, 2021 at 11:27 am回复
  12. TK

    运行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

    TK March 15th, 2021 at 11:07 am回复
    1. Yang_99

      可能是更改文件位置造成的,可以放windows调试下排查一下

      Yang_99 March 15th, 2021 at 11:22 am回复
  13. alice

    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

    请问这个怎么解决

    alice March 15th, 2021 at 01:36 pm回复
  14. keen

    [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)

    keen March 17th, 2021 at 01:52 pm回复
    1. keen

      [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 将重试.

      keen March 17th, 2021 at 01:54 pm回复
    2. Yang_99

      啊这,打个断点调试一下吧

      Yang_99 March 17th, 2021 at 02:38 pm回复
      1. keen

        我是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)

        keen March 17th, 2021 at 02:54 pm回复
      2. keen

        找到问题了,加了token导致的 (ó﹏ò。)

        keen March 17th, 2021 at 04:19 pm回复
  15. yangyang

    [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}

    大佬这可怎么办啊

    yangyang March 29th, 2021 at 05:29 pm回复
    1. Yang_99

      这个是正常的。

      Yang_99 March 31st, 2021 at 10:40 am回复
  16. keen

    请问cqhttp那边加了token,yesbot这边要怎么配置

    keen March 31st, 2021 at 02:47 pm回复
    1. keen

      搞定了,request里面加了个header

      keen March 31st, 2021 at 03:51 pm回复
  17. lewiserii

    大佬,我两边都正常运行为什么qq群里没有反应,config也设置了,qq1930774374

    lewiserii April 7th, 2021 at 04:37 pm回复
  18. 冲鸭

    额,依然不是很会,楼主的config已经是几个版本前的了,不能复制粘贴运行,照着改了后也并无效果,只是start了,但给bot发消息也没反应。望楼主不吝赐教 (ó﹏ò。) :a:

    冲鸭 April 11th, 2021 at 01:56 am回复
    1. Yang_99

      我的bot没问题,一直在运行。。如果觉得是版本问题可以点开cqhttp release下载旧版试试。不过感觉应该版本影响不大

      Yang_99 April 11th, 2021 at 01:52 pm回复
      1. 冲鸭

        楼主能确切说一下用的哪个版本的吗,上午试过一个0.9.38的 ,但是cqhttp报错了emmm,对socket还不是很理解。没看懂报错什么意思 (ó﹏ò。)

        冲鸭 April 11th, 2021 at 06:48 pm回复
        1. 冲鸭

          目前就是能收到消息,但post不出去

          冲鸭 April 11th, 2021 at 07:01 pm回复
          1. 冲鸭

            能跑了/ _ \,代码也看了几遍 可以二次开发了。。

            冲鸭 April 11th, 2021 at 10:15 pm
          2. 冲冲鸭

            怎么做到能跑啊 我现在还是你之前说的 只是start了 毫无反应

            冲冲鸭 April 17th, 2021 at 08:44 pm
        2. Yang_99

          go-cqhttp-v0.9.37-fix1-linux-amd64.tar.gz

          Yang_99 April 12th, 2021 at 03:42 pm回复
          1. 冲鸭

            楼主用什么跑的啊,我放自己电脑虚拟机跑了两天。看了看服务器 都tm好贵啊 有无推荐 (

            冲鸭 April 13th, 2021 at 12:26 am
          2. Yang_99

            学生机

            Yang_99 April 14th, 2021 at 09:37 am
    2. Yang_99

      单步调试一下。。。看看哪里处理的有问题

      Yang_99 April 26th, 2021 at 05:42 pm回复
  19. MefiMefi

    群内@机器人 加 猫猫图 不会报错终终止程序但就是不出猫猫图

    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这个语法的锅

    MefiMefi April 18th, 2021 at 01:10 am回复
    1. MefiMefi

      ps.私聊功能测试正常

      MefiMefi April 18th, 2021 at 01:16 am回复
      1. Yang_99

        可以python代码单步调试一下

        Yang_99 April 26th, 2021 at 05:41 pm回复
  20. keen

    大佬,cqhttp更新了,反向post好像没用了,能帮忙测试新版看看吗

    keen April 28th, 2021 at 05:01 pm回复
  21. Chichak

    大佬,为啥发了违禁词不会禁言呀,已经给了管理员了

    Chichak May 10th, 2021 at 10:55 am回复
  22. 孤舟.

    大佬
    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'
    是什么情况

    孤舟. May 13th, 2021 at 12:57 pm回复
  23. 萘萘

    大佬,最新版的cqhttp用这个bot只有私聊有反应,qq群没反应了

    萘萘 May 15th, 2021 at 10:38 am回复
  24. 不可解

    大佬有qq群吗

    不可解 June 2nd, 2021 at 11:07 am回复
  25. 易语言

    不错

    易语言 July 30th, 2021 at 12:43 pm回复
取消回复

说点什么?

© 2023 Yang_99的小窝. Using Typecho & Moricolor.