Giter Site home page Giter Site logo

qq-robot's Introduction

简介

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 人工智障开源库

qq-robot's People

Contributors

mujint avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.