这是悠纪开发的一个用于 Discord 评价统计的小工具。
这个项目主要是帮助 Discord 服务器统计论坛频道中的反应投票情况的。在组织赛事投票的时候,存在某些用户的刷票情况,以及跨服务器的作品评价统计的问题,这个工具就是为了解决这些问题而生的~
- 智能投票统计:自动获取指定帖子的最高反应表情和投票用户
- 有效用户筛选:根据最少投票数要求,筛选出真正参与的有效用户
- 分组作品支持:支持将多个相关帖子视为同一作品进行统计(用
~分隔) - 排序输出:结果按有效评价数量从多到少排序,一目了然呢
首先需要创建 appsettings.json 配置文件(可以参考 appsettings.example.json):
{
"Discord": {
"Token": "你的机器人Token",
"Proxy": "代理地址(可选)",
"TestGuildIds": [服务器ID列表],
"WhitelistUserIds": [白名单用户ID],
"AllowedRoles": ["允许使用的角色名称"]
}
}在 Discord 中使用 /analyze 命令:
/analyze urls:<Discord帖子链接> [min_votes:3] [output_users:false]
参数说明:
urls:逗号分隔的 Discord 帖子链接- 支持单个链接:
https://discord.com/channels/服务器ID/频道ID - 支持汇总帖子:
https://discord.com/channels/服务器ID/频道ID/帖子ID - 支持多个链接:用逗号
,分隔 - 支持分组作品:用波浪号
~连接同一作品的多个链接
- 支持单个链接:
min_votes:有效投票所需的最少投票作品数(默认为3)output_users:是否输出有效用户列表(默认否)global_visible: 输出内容是否所有人可见(默认否)valid_reactions: 筛选哪些评价表情是有效的,以逗号分隔(默认不启用)forum_weight:在统计上给特定分区的作品乘上权重,名字不需要严格匹配,只需要包含。例:{"纯净区": 8.0, "男性向": 1.0, "小众区": 5.0}role_weight: json格式编码的,各个用户组的权重列表,例:{"黑百合": 3,"创作者": 1.5,"赛博议员": 2, "已验证": 1.01}(默认不启用)
/analyze urls:https://discord.com/channels/123/456,https://discord.com/channels/123/789
分组作品示例(将两个帖子视为同一作品):
/analyze urls:https://discord.com/channels/123/456~https://discord.com/channels/123/789
这个项目使用了以下技术栈:
- C# .NET 8.0:主要开发语言
- DSharpPlus:Discord API 的 .NET 封装库
- Slash Commands:现代化的 Discord 命令交互方式
# 克隆项目
git clone https://github.com/你的用户名/VoteCalc.git
# 进入项目目录
cd VoteCalc
# 构建项目
dotnet build
# 运行项目
dotnet run --project VoteCalc/VoteCalc.csproj- 机器人需要有读取消息和反应的权限
- 大量消息统计可能需要一些时间,请耐心等待
- 确保配置文件中的 Token 安全,不要泄露哦
如果你想为这个项目做贡献,我会很开心的呢!请遵循以下步骤:
- Fork 这个仓库
- 创建你的功能分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
如果有任何问题,可以在 Issues 中提出,我会尽快回复的~
这个项目使用 AGPL 3.0 许可证 - 详情请查看 LICENSE 文件