Skip to content
This repository has been archived by the owner on May 12, 2024. It is now read-only.

CuteReimu/tfcc-bot-go

Repository files navigation

东方Project沙包聚集地机器人

本项目已迁移至 https://github.com/CuteReimu/YinYangJade

这是东方Project沙包聚集地(以下简称“红群”)的机器人,基于MiraiGo编写。

声明

  • 本项目采用AGPLv3协议开源。同时强烈建议各位开发者遵循以下原则:
    • 任何间接接触本项目的软件也要求使用AGPLv3协议开源
    • 不鼓励,不支持一切商业用途
  • 由于使用本项目提供的接口、文档等造成的不良影响和后果与本人和红群无关
  • 由于本项目的特殊性,可能随时停止开发或删档
  • 本项目为开源项目,不接受任何的催单和索取行为

使用方法

建议在编译前更新一下依赖:

go get -u

编译:

go build -o tfcc-bot.exe

然后双击运行生成出来的tfcc-bot.exe即可。比较建议在cmd窗口中输入tfcc-bot.exe运行,以防panic后报错信息无法看到。

在功能完善后,会将编译好的包放在Release中供大家下载。

关闭程序时,请使用ctrl+C关闭,以确保db、log、bot等模块正常关闭。如果强制退出,可能会导致部分数据未写入硬盘,下次启动时丢失数据。

配置文件

第一次运行会自动生成配置文件application.yaml,如下:

bilibili:
  area_v2: "236"           # 直播分区,236-主机游戏
  mid: "12345678"          # B站ID
  password: "12345678"     # 密码
  room_id: "12345678"      # B站直播间房间号
  username: "13888888888"  # B站用户名
bot:
  login-method: qrcode  # 登录方式
  account: 0           # 机器人QQ号
  password: ""         # 机器人密码
qq:
  rand_count: 10            # 每天随符卡限制次数
  rand_one_time_limit: 20   # 单次随符卡的数量限制
  related_url: ""           # 关联的网站网址
  super_admin_qq: 12345678  # 主管理员QQ号
  qq_group: # 主要功能的QQ群
    - 12345678
repeater_interruption:
  allowance: 5  # 打断复读功能限制的复读次数
  cool_down: 3  # 打断复读冷却时间(秒)
  qq_group: # 打断复读的Q群
    - 12345678
schedule:
  before: # 预约功能提前提醒时间(秒)
    - 10800
    - 21600
  qq_group: # 预约功能提醒QQ群
  - 12345678
  video_push_delay: 600  # 视频推送间隔
thwiki:
  enable: false  # 是否开启查新闻功能

修改配置文件后重新启动即可。

模块

  • chatPipeline 非命令式的QQ聊天消息处理。想要新增,实现pipelineHandler接口并在init()中调用register()即可
  • commandHandler QQ聊天中输入的命令。想要新增命令,实现cmdHandler接口并在init()中调用register()即可
  • db 一个嵌入式Key-Value型数据库,使用这个模块存储的数据会被存在硬盘里,下次重启后仍然保留
  • perm 权限管理,管理员和白名单
  • main.go 程序入口

运行时生成的文件

以下文件会在运行时自动生成

  • assets/database/ 是db模块的数据文件
  • log/ 日志文件
  • application.yaml 是配置文件
  • device.json 是设备信息文件。不要删除,否则会被QQ认为你换了一台设备登录
  • session.token 是会话信息文件,用于重启时快速恢复登录状态。想要更换QQ号登录请删除这个文件

功能一览

  • 管理员、白名单
  • B站开播、修改直播标题、查询直播状态
  • 随作品、随机体
  • B站视频解析
  • B站视频推送
  • 投票
  • 查新闻
  • 增加预约功能
  • 查询分数表
  • 打断复读
  • 随符卡
  • rep解析

第三方库的使用

  • github.com/Mrs4s/MiraiGo 一个移植于mirai的golang实现的库
  • github.com/dgraph-io/badger 一个强大的内嵌的数据库系统
  • github.com/sirupsen/logrus 一个强大的日志库
  • github.com/go-resty/resty 强大的Http Client库
  • github.com/tidwall/gjson 易用的json解析库
  • github.com/spf13/viper 强大的config解析库
  • github.com/ozgio/strutil 一个字符串处理库
  • github.com/araddon/dateparse 一个可以识别任意格式日期的库
  • github.com/dlclark/regexp2 完整版的正则表达式库
  • github.com/pkg/errors 可以将golang本身的error包装的库
  • github.com/CuteReimu/threp 一个东方replay文件的解析库
  • github.com/CuteReimu/bilibili 一个B站API的golang版sdk