目前支持的比赛网站:
Codeforces
AtCoder
NowCoder(隐藏了高校系列赛,目前只能查询牛客系列赛)
run (py|java|cpp|js|ts|c#|c|go|asm|rust|lua)
可选的标准输入
---
代码
戳一戳机器人或 发送 状态
首先需要安装go-cqhttp
Link
关于go-cqhttp
和本 bot 的通信配置,请查阅CQHTTP 协议使用指南
之后运行pip install -r requirements.txt
安装环境变量
对于钉钉模块,使用前请配置好src/dingtalk_services/__init__.py
文件中, DingTalk_Client
的__get_token
中app_key
与app_secret
两个个参数
最后运行go-cqhttp
和bot.py
文件(使用 neonebot 脚手架请运行nb run
)
在配置机器人前,希望你能够熟悉
nonebot2
框架,如果你对此不熟悉,请先查阅nonebot2 教程关于
go-cqhttp
和机器人的通信配置,请查阅CQHTTP 协议使用指南
对于机器人的昵称、命令前缀、超级用户等配置,都存储在.env.prod中 在.env.dev有配置一份模板
具体的配置请参考上方给予的nonebot2教程
各个网站比赛信息爬取的脚本都保存在src/contests_services/文件夹中,以比赛网站的名称命名
如果你想增加爬取其他网站的脚本,为了减少对整个项目的改动,建议你将爬取后的信息用以下格式保存或获取
[{
'name': name,
'link': link,
# 'holder': holder,
# 'register_time': register_time,
'contest_time': contest_time
},
{
#....
}]
在本项目中,爬取比赛时没有保留holder
和register_time
的信息,如果你对这两个信息有需求,建议参考上面的样式保存
如果你想要一个获取比赛信息的实例,建议参考nowcoder.py
如果你对钉钉相关的 API 不太熟悉,建议查阅钉钉开发文档
本项目中,钉钉部分的功能全是通过发送HTTP
请求实现的,在使用相关功能时,请务必确保你对相关的接口拥有调用的权限
请在src/dingtalk_services/__init__
.py填写app_key
和app_secret
本机器人已经实现好了对钉钉 API 的调用,这些模块都存储在src/dingtalk_services下
__init__.py
中,可以获取AccessToken
,详情请看文件
user.py
可以获取根部门的用户信息,具体可以获取的信息请查看钉钉开发文档
,在本项目中,只是获取了userid
和用户名,具体请看源文件
checker.py
中构造了permission_checker()
方法,用于检查权限,确保命令只能在指定的群内,由群主、管理员或开发人员调用,防止命令滥用导致钉钉接口达到调用频率上限(40 次每秒)
absence.py
可以获取缺勤人员,所有缺勤人员的信息将以(name, userid)
的形式返回一个列表。需要注意的是,请假人员也是在缺勤范围内的
vatation.py
可以从缺勤人员中,获取请假人员的名单。返回形式同absence.py
report.py
可以获取集训队所有成员的出勤次数和旷工次数,结果按照旷工次数从大到小排序,返回(姓名, 旷工次数, 出勤天数)
形式的列表。
使用者可以使用或二次开发这些服务, 来修改或增加本项目中的插件功能
- 将 Codeforces 比赛获取方式改为从 API 获取
- 将项目部署在 Docker 中
- [-] 向 V2 分支尽可能的靠拢(已经靠拢一些了吧)