/TGbot

Telegram投稿机器人,支持多图与权限管理

Primary LanguageC#GNU Affero General Public License v3.0AGPL-3.0

Xinjingdaily Bot

Codacy Badge GitHub Workflow Status License GitHub last commit

GitHub Release GitHub Release GitHub Download

GitHub Repo stars

爱发电 Bilibili Steam Steam

心惊报 @xinjingdaily 自主开发的投稿机器人

心惊报投稿机器人 @xinjingdaily_bot

功能特性

  • 支持文字/图片/音频/视频投稿
  • 支持多图投稿
  • 支持匿名投稿
  • 支持直接发布投稿
  • 支持编辑标签
  • 支持过滤标签
  • 简单用户管理
    • 设置用户组
    • 封禁/解封
    • 封禁记录查询
    • 查看用户投稿统计
    • 匿名回复
    • 检索用户
  • 审核超时自动拒绝
  • 稿件检索
  • 实装用户等级系统

安装与使用

Releases 下载编译好的文件以后, 直接运行 XinjingDailyBot 即可

升级注意

数据库主键从 long 改为了 int , 如果从 1.x 升级至 2.x 后无法正常运行, 请重新创建数据库, 待程序生成数据库结构后使用工具手动导入旧的数据

2.x 后, 可选 Sqlite 作为数据库实现, 在配置文件的 Database 节设置 UseMySQLfalse 即可

配置说明

配置文件为 appsettings.json 默认配置如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",

  // 调试模式
  "Debug": false,
  // 机器人设置
  "Bot": {
    "BotToken": "",
    "Proxy": null,
    "ThrowPendingUpdates": false,
    "AutoLeaveOtherGroup": false,
    "SuperAdmins": []
  },
  "Channel": {
    "ReviewGroup": "",
    "CommentGroup": "",
    "SubGroup": "",
    "AcceptChannel": "",
    "RejectChannel": ""
  },
  // 消息设置
  "Message": {
    "Start": "欢迎使用 心惊报 @xinjingdaily 专用投稿机器人",
    "Help": "发送图片/视频或者文字内容即可投稿"
  },
  // 数据库设置
  "Database": {
    "Generate": true,
    "UseMySQL": true,
    "LogSQL": false,
    "DbHost": "localhost",
    "DbPort": 3306,
    "DbName": "xjb_db",
    "DbUser": "root",
    "DbPassword": "123456"
  }
}
配置项 类型 默认值 说明
Debug bool false 是否开启调试模式
- - - -
Bot BotToken string "" 机器人 Token
Bot Proxy string null 代理地址, 支持 http 和 sock5
Bot ThrowPendingUpdates bool false 启动时是否忽略机器人离线时产生的 Update
Bot AutoLeaveOtherGroup bool false 是否自动离开无关群组
Bot SuperAdmins int[] [] 超级管理员 数字 ID 列表
Bot BotToken string "" 机器人 Token
Bot BotToken string "" 机器人 Token
- - - -
Channel ReviewGroup string "" 审核群组 ID
Channel CommentGroup string "" 评论群组 ID
Channel SubGroup string "" 闲聊群组 ID
Channel AcceptChannel string "" 审核通过频道 ID
Channel RejectChannel string "" 审核拒绝频道 ID
- - - -
Message Start string "欢迎使用 心惊报 @xinjingdaily 专用投稿机器人" 使用 /start 命令显示的欢迎语
Message Help string "发送图片/视频或者文字内容即可投稿" 使用 /help 命令显示语句
- - - -
Database Generate bool true 是否自动生成数据库表
Database UseMySQL bool true 是否使用 MySQL 作为数据库实现
Database LogSQL bool false 是否输出 SQL 日志
Database DBHost string "127.0.0.1" MySQL 主机
Database DBPort int 3306 MySQL 端口
Database DBName string "xjb_db" 数据库名
Database DBUser string "root" 数据库用户名
Database DBPassword string "123456" 数据库密码

新安装或者数据库结构变动后一定要修改 DBGeneratetrue, 会自动生成数据表, 生成完毕后建议禁用以加快启动速度


SuperAdmins 机器人超级管理员的 UserID 列表, 覆盖数据库中的设定, 用户 UserID 可以使用命令 /myinfo 获取


AcceptChannel 和 RejectChannel 必须为公开频道, 频道名需要加 @, 例如 @xinjingdaily


ReviewGroup, CommentGroup, SubGroup 不一定需要是公开频道 如果是公开群组, 群组名需要加 @, 例如 @xinjingdailychatroom 如果是私有群组, 可以使用命令 /groupinfo 获取群组的信息, 然后设置为群组的 GroupID

权限说明

内置用户组权限如下

权限组的 发布员 目前有点问题,等待修复

组 ID 组名 权限 说明
0 封禁用户 无法直接设置用户到这个组, 被封禁的用户自动被视为此组的成员
1 普通用户 投稿,普通命令 默认的用户组
10 审核员 投稿,审核投稿,普通命令 具有审核权限的普通用户
11 发布员 投稿,直接发布,普通命令 具有直接发布权限的普通用户
20 狗管理 投稿,审核投稿,直接发布,普通命令,管理员命令 具有所有投稿权限,可以使用普通管理员命令
30 超级狗管理 所有权限(狗管理的权限 + 超级管理员命令) 具有所有投稿权限,可以使用所有命令
50 *超级狗管理* 所有权限(狗管理的权限 + 超级管理员命令) 具有所有投稿权限,可以使用所有命令

管理员仅能对用户组 ID 比自己小的对象(除了自己)进行操作, 例如狗管理(组 ID 为 20)无法操作超级狗管理(组 ID 为 30)


config.jsonSuperAdmins 项中定义的管理员拥有最高的权限(组 ID 为 50) 虽然权限与超级狗管理(组 ID 为 30)相同, 但是因为具有更高的组 ID, 因此可以操作所有用户(除了自己)

命令说明

  • 通用命令

任何用户组都能使用, 包括封禁用户

命令 参数 说明
/start - 显示机器人欢迎语
/about - 显示机器人欢迎语
/help - 显示当前可用的命令
/myban - 查询自己的封禁记录
/version - 显示机器人版本信息
  • 普通命令

拥有普通命令权限的用户组可用

命令 参数 说明
/ping - 机器人存活测试
/anonymous - 仅限私聊, 设置投稿时是否默认使用匿名模式
/notification - 仅限私聊, 设置投稿被审核后是否接收通知
/myinfo - 显示自己的投稿统计信息
/myright - 显示自己的权限信息
/admin - 仅限群聊, 艾特群组中的所有管理员
  • 审核命令

拥有审核权限的用户组可用

命令 参数 说明
/no 理由 用自定义理由拒绝稿件
/edit 描述 修改稿件的描述信息
/echo [UserName/UserID] 消息 通过机器人向指定用户发送消息
  • 管理员命令

拥有管理员命令权限的用户组可用

命令 参数 说明
/groupinfo - 仅限群聊使用, 查看群组信息
/userinfo [UserName/UserID] 获取指定用户的信息
/ban [UserName/UserID] 理由 封禁指定用户
/unban [UserName/UserID] 理由 解封指定用户
/warn [UserName/UserID] 理由 警告指定用户, 超过 3 次自动封禁
/queryban [UserName/UserID] 显示指定用户的封禁记录
/queryuser 关键词 [页码] 通过关键词查找用户
/sysreport - 查看机器人统计信息
/invite - 生成审核群的邀请链接
/userrank - 显示用户投稿数据排行榜
/postreport - 显示投稿状态
/sysreport - 显示系统状态
  • 超级管理员命令

拥有超级管理员命令权限的用户组可用

命令 参数 说明
/restart - 重启机器人
/setusergroup [UserName/UserID] 修改指定用户的用户组
/channeloption 回复投稿使用 设置来自特定频道的投稿策略
/command - 设置命令菜单