chenxi2015 / QQ-RoBot

一个使用c#编写,基于onebot标准的QQ机器人

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

简介

QQ.RoBot是一个基于onebot标准的机器人/当然目前只写了部分我常用的功能,需要添加指令请自行添加相应接口实现。
请注意:是基于.Net6所写
默认数据库存档是:LiteDb

声明

  • QQ.RoBot是完全免费且开放源代码的软件,仅供学习和娱乐用途使用,不会进行一切形式的收费
  • 使用Apache-2.0开源协议

功能概览

  • 来点色图
  • 人工智障对话
  • 莲Bot(基于天刀整容交流团一系列命令)
  • 谁是卧底(2022.6新增,注意需要添加机器人为QQ好友)
  • 其它娱乐功能

未来计划

  • 谁是卧底(2022年6月已完成,未测试。需添加机器人为好友。指令【谁是卧底】)
  • 修仙类似游戏(待续)

平台兼容性

注意
仅支持反向WebSocket通讯方式
仅支持Array事件上报格式
不定时更新版本,未发布Lts版本

可以运行在支持onebot协议的平台下
对Windows/Liunx/OSX平台都进行了支持(包括ARM架构)目前没有打相应的包
如果出现Windos环境出现闪退现象,请前往微软下载.Net6环境

常用指令

指令
指令 功能
[签到] [当天签到赠送积分]
[查询] [查询积分]
[优质睡眠 昏睡红茶 昏睡套餐 健康睡眠] [被禁言8小时]
[早安 晚安] [某时间段进行]
[莲] [随机一句话]
[分来] [几率送分]
[排行榜] [统计积分排行榜]
[特殊事件] [特殊时间产生的记录]
[技能 菜单 功能] [呼出菜单]
[抽奖] [可能产生送分或者禁言]
[打劫] [可能产生送分或者禁言]
[救援 劫狱] [救出被禁言的对象,可能被禁言]
[赠送] [赠送某个对象积分]
[加分 扣分 全体加分 全体扣分] [针对某人或全体成员加减积分]
[积分记录 个人积分] [个人积分记录详情]
[添加数据密码 添加词库] [添加一条数据密码或添加一条随机词库]
[骰子 扔骰子 掷骰子 色子] [骰子]
[词云] [生成个人发言特点图片]
[发言榜] [当前群聊的发言次数榜单]
[来点色图 来点涩图 我要看色图 色图 涩图] [发送一张H图,非R18]
[谁是卧底] [启用谁是卧底游戏]

使用

服务端
  • 如果只需要运行在本地,不需要源代码,请前往Release下载最新包
  • 分为两个文件,一个是client一个是server目前仅打包了64位操作系统
  • 请注意server端是go-cqhttp归原作者所有,可前往go-cqhttp自行下载
  • 默认配置文件如下,需要填入账号以及密码,上报数据类型为array,反向websocket地址为ws://127.0.0.1:9200
    # go-cqhttp 默认配置文件
        account: # 账号相关
          uin: 123456 # QQ账号
          password: '' # 密码为空时使用扫码登录
          encrypt: false  # 是否开启密码加密
          status: 0      # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
          relogin: # 重连设置
            delay: 3   # 首次重连延迟, 单位秒
            interval: 3   # 重连间隔
            max-times: 0  # 最大重连次数, 0为无限制
    
          # 是否使用服务器下发的新地址进行重连
          # 注意, 此设置可能导致在海外服务器上连接情况更差
          use-sso-address: true
    
        heartbeat:
          # 心跳频率, 单位秒
          # -1 为关闭心跳
          interval: 5
    
        message:
          # 上报数据类型
          # 可选: string,array
          post-format: array
          # 是否忽略无效的CQ码, 如果为假将原样发送
          ignore-invalid-cqcode: true
          # 是否强制分片发送消息
          # 分片发送将会带来更快的速度
          # 但是兼容性会有些问题
          force-fragment: false
          # 是否将url分片发送
          fix-url: false
          # 下载图片等请求网络代理
          proxy-rewrite: ''
          # 是否上报自身消息
          report-self-message: false
          # 移除服务端的Reply附带的At
          remove-reply-at: false
          # 为Reply附加更多信息
          extra-reply-data: false
          # 跳过 Mime 扫描, 忽略错误数据
          skip-mime-scan: false
    
        output:
          # 日志等级 trace,debug,info,warn,error
          log-level: warn
          # 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.
          log-aging: 15
          # 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写
          log-force-new: true
          # 是否启用 DEBUG
          debug: false # 开启调试模式
    
        # 默认中间件锚点
        default-middlewares: &default
          # 访问密钥, 强烈推荐在公网的服务器设置
          access-token: ''
          # 事件过滤器文件目录
          filter: ''
          # 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: 1     # 令牌桶大小
    
        database: # 数据库相关设置
          leveldb:
            # 是否启用内置leveldb数据库
            # 启用将会增加10-20MB的内存占用和一定的磁盘空间
            # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
            enable: true
    
        # 连接服务列表
        servers:
          # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
          #- http: # http 通信
          #- ws:   # 正向 Websocket
          #- ws-reverse: # 反向 Websocket
          #- pprof: #性能分析服务器
          # 反向WS设置
          - ws-reverse:
              # 反向WS Universal 地址
              # 注意 设置了此项地址后下面两项将会被忽略
              universal: ws://127.0.0.1:9200
              # 反向WS API 地址
              api: ws://your_websocket_api.server
              # 反向WS Event 地址
              event: ws://your_websocket_event.server
              # 重连间隔 单位毫秒
              reconnect-interval: 3000
              middlewares:
                <<: *default # 引用默认中间件
  • 可能会出现异地环境登陆或者失败,请多尝试几次
客户端
  • 打开Client文件夹中QQ.RoBot.exe运行,如出现闪退,请参考上文。
  • 打开根目录文件夹中的配置文件appsettings.json
  • 更改appsettings.json配置,请注意此处的Port应与上文的【WebSocket监听地址】端口一致
  • 更改appsettings.json配置,请根据自身需要更改,有注释
AI对话
  • 注意如需使用人工智障对话,请配置AiPath的请求URL,同时启用appsettings.jsonIsAi

    请注意:在2022年更新之后已停止使用ChattrtBot。改用第三方AI接口

  • 人工智障使用,打开AI文件夹,安装Python环境,安装开源包ChatterBot,在当前文件夹中创建如下Python文件
    • 安装Python环境请自行百度,安装ChatterBot也请自行百度
      from flask import Flask, render_template, request, jsonify
      from chatterbot import ChatBot
    
      app = Flask(__name__)
    
      bot = ChatBot(
            'Qiushui',
            database_uri='sqlite:///MainDb.sqlite3'
        )
    
      @app.route("/get")
      def get_bot_response():
          userText = request.args.get('msg')
          return str(bot.get_response(userText))
    
      @app.route("/api/chat/<text>")
      def get_bot_api(text):
          res = str(bot.get_response(text))
          return jsonify(res), 200
    
    
      if __name__ == "__main__":
          app.run(host='127.0.0.1', port=8889)
    • 在此打开Python命令,运行Python xxx.py
    • config.yaml中的url路径则为http://127.0.0.1:8889
    • 如果需要映射到外网,通过Nginx转发,或者Utools内网穿透等等等
  • 请多看注释,然后再Issue
  • 可以参考我的博客图文使用攻略点这
  • 或者参考bilibili
  • 如需通过源码方式,请直接下载当前源码

添加功能

可参照ILianInterface中的实现
以下均在QQ.RoBot文件夹中

  • 1.在Interface文件新建自己的接口,请注意务必以Interface结尾
  • 2.在Service文件夹继承你的接口并实现,请注意务必以Service结尾
  • 3.在BotStartUp类中注入你的接口以及实现
  • 4.在RobotService类构造函数注入接口
  • 5.完毕。请不要忘记在接口添加特性[KeyWord("关键字")]

底层框架

go-cqhttp
cqhttp-mirai
mirai
mirai-console

使用到开源库

System.Text.Encoding.CodePages
Sora
LiteDB
JieBa.NET 结巴中文分词.net库
WordCloud 词云
.net实现wordcloud .net词云
ChatterBot 人工智障开源库

About

一个使用c#编写,基于onebot标准的QQ机器人

License:Apache License 2.0


Languages

Language:C# 100.0%Language:Dockerfile 0.0%