Skip to content

FrankOu2001/codeforces_robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codeforces_bot

功能

查询 codeforces 个人信息

查询比赛信息

目前支持的比赛网站:

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_tokenapp_keyapp_secret两个个参数

最后运行go-cqhttpbot.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
    },
    {
        #....
    }]

在本项目中,爬取比赛时没有保留holderregister_time的信息,如果你对这两个信息有需求,建议参考上面的样式保存

如果你想要一个获取比赛信息的实例,建议参考nowcoder.py

钉钉 API 的适配

如果你对钉钉相关的 API 不太熟悉,建议查阅钉钉开发文档

本项目中,钉钉部分的功能全是通过发送HTTP请求实现的,在使用相关功能时,请务必确保你对相关的接口拥有调用的权限

接入钉钉 API

请在src/dingtalk_services/__init__.py填写app_keyapp_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可以获取集训队所有成员的出勤次数和旷工次数,结果按照旷工次数从大到小排序,返回(姓名, 旷工次数, 出勤天数)形式的列表。

使用者可以使用或二次开发这些服务, 来修改或增加本项目中的插件功能

TODO

  • 将 Codeforces 比赛获取方式改为从 API 获取
  • 将项目部署在 Docker 中
  • [-] 向 V2 分支尽可能的靠拢(已经靠拢一些了吧)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages