zoukankan      html  css  js  c++  java
  • Ubuntu16.04安装QQ机器人

    Ubuntu安装QQ机器人

    看了看现在QQ机器人似乎只有酷Q机器人有Docker可以在linux上运行了
    那就k开始装酷Q机器人,资源占用也不是很大,大概占用180M内存吧

    安装酷Q HTTP

    首先安装好docker
    在这里插入图片描述
    酷Q官网提供了docker COOLQ Docker 2.0
    但是我是打算通过HTTP进行一些功能开发的,于是选择了大佬做的带HTTP插件的 CQHTTP Docker
    首先pull镜像,我觉得下载的比较慢,挂了一个screen慢慢下

    docker pull richardchien/cqhttp:latest
    

    下载完成后启动容器进行测试

    docker run -ti --rm --name coolq 
            -v /home/coolq:/home/user/coolq   # 将宿主目录挂载到容器内用于持久化 酷Q 的程序文件
            -p 9000:9000   # noVNC 端口,用于从浏览器控制 酷Q
            -p 5700:5700   # HTTP API 插件开放的端口
            -e COOLQ_ACCOUNT=123456  # 要登录的 QQ 账号,可选但建议填
            -e CQHTTP_POST_URL=http://example.com:8080   # 事件上报地址
            -e VNC_PASSWD=111111111  # noVnc密码
            -e CQHTTP_SERVE_DATA_FILES=yes   # 允许通过 HTTP 接口访问 酷Q 数据文件
            richardchien/cqhttp:latest
    

    此时可以登录noVNC查看并且登录了
    在这里插入图片描述
    如果测试没有问题的话,就讲启动参数中的--rm改为-d就可以存储运行了

    docker start coolq
    docker stop coolq
    

    supervisord开机自启

    由于我有一个定时任务多久开关机一次,但是coolq不会开机自启动,选择supervisord进行开机自启
    注意autorestart=false,由于启动coolq后会exit(0),所以supervisord会不断尝试重启,我们只需要他启动一次就好

    [program:coolq]
    command=docker start coolq
    stderr_logfile=/var/log/supervisor/error_coolq.log
    stdout_logfile=/var/log/supervisor/coolq.log
    directory=/home
    autostart=true
    user=docker
    autorestart=false
    

    配置信息

    账号的配置文件

    注意上报地址不能为127.0.0.1,因为容器内有自己的127.0.0.1,一般情况下可使用机器ip作为上报地址

    [123456789]
    use_ws = false
    use_ws_reverse = false
    serve_data_files = yes
    access_token = 11111111111111111
    log_level = error
    post_url = http://example.com:8080
    secret = 11111111111111111
    show_log_console = false
    event_filter = filter.json
    

    过滤上报HTTP配置文件

    • 私聊消息
    • 非匿名发送的@机器人的群消息
    • 非匿名的‘出来’群消息
    • 加好友消息、加群邀请、加群请求
    {
        ".or": [
            {
                "message_type": "private"
            },
            {
                "message_type": "group",
                "anonymous": {
                    ".eq": null
                },
                "raw_message": {
                    ".regex": "CQ:at,qq=2450184313|^出来$"
                }
            },
            {
                "post_type": "request"
            }
        ]
    }
    

    防火墙

    由于Docker直接更改iptables且优先级比ufw高,不能通过ufw控制其监听端口的开放关闭,需要手动配置Docker信息

    # vim /etc/default/ufw
    DEFAULT_FORWARD_POLICY="ACCEPT"
    
    # vim /etc/ufw/before.rules
    # *filter前面添加下面内容 
    # 172.17.0.0/16 为docker网桥地址,可能不同
    *nat
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
    COMMIT
    
    
    # vim /etc/default/docker
    # 添加此条配置信息
    DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"
    
    # vim /etc/docker/daemon.json
    # 没有此文件则创建
    {
    "iptables": false
    }
    

    重启daemondockerufw

    systemctl daemon-reload && systemctl restart docker && ufw reload
    
  • 相关阅读:
    Java多态的学习
    Java显示的静态初始化和非静态实例初始化
    Java类方法访问权限
    JavaScript数组详解
    JavaScript倒计时的具体实现
    JavaScript之Date对象
    JavaScript内置对象之Math对象
    JavaScript对象
    JS的作用域,作用域链及预解析
    JavaScript函数
  • 原文地址:https://www.cnblogs.com/WindrunnerMax/p/12558350.html
Copyright © 2011-2022 走看看