Skip to main content

小爱课程表

Project description

nonebot

nonebot-plugin-ai-timetable

基于Nonebot2的对接小爱课程表的插件

nonebot license pypi python

💿安装

  1. 通过pipnb安装;

    • 使用nb(推荐)

      在机器人目录下命令行使用nb plugin install nonebot_plugin_ai_timetable

    • 使用pip:

      pip plugin install nonebot_plugin_ai_timetable

      然后在机器人pyproject.toml里的plugins = []列表追加"nonebot_plugin_ai_timetable"

    • 使用其他包管理器:

      根据包管理器的指令安装插件

  2. 数据存储使用plugin-orm, 使用nb orm upgrade升级数据库

[!WARNING] 第一次使用plugin-orm,或者插件定义的模型有所更新时,需要用nb orm upgrade升级数据库

📖简介

  1. 傻瓜式一键导入小爱课表,让你的bot实现小爱课表的功能

  2. 用户课表数据隔离,基于plugin-rom, 接入数据库,无需担心课程时间冲突、不同学校课表不同等问题

  3. 适配多平台,即使是电报涩涩群也要好好学习!🥵🥵

⚙️插件配置

[!NOTE] 可选的插件配置 这些配置都已设好默认值,因此是可选的,如果想要修改配置,在机器人目录下的.env.*里面可以填写以下选项, 未来会考虑开放更多的配置项

config type default example usage
TIMETABLE_PIC bool true TIMETABLE_PIC=false 可选择某日课表以图片/文字发送,默认以图片发送(true)
TIMETABLE_ALOCK_SOMEDAY int 22 TIMETABLE_ALOCK_SOMEDAY=15 订阅某日课表的发送时间,必须是0-24的数字
TIMETABLE_ALOCK_8 int 21 TIMETABLE_ALOCK_8=16 订阅早八的发送时间,必须是0-24的数字.这里发送的都是第二天的,所以建议设置为18-23点
TIMETABLE_SEND_TIME float 0.5 TIMETABLE_SEND_TIME=1 订阅课程提前发送的时间,单位是小时,可以是整数也可以是小数,建议不要设的太大,避免出现无法预料的bug

💿依赖

[!NOTE] 插件依赖会在安装时自动安装,如果安装失败,你可以按照以下指令手动再次安装

nb plugin install nonebot_plugin_htmlrender
nb plugin install nonebot_plugin_apscheduler
nb plugin install nonebot_plugin_alconna
nb plugin install nonebot_plugin_orm

🌙更新日志

点击展开
  • 0.4.1 / 2024-05-07:

    1. 修复定时提醒一直发送的问题
    2. 更新README.md
    3. 修复type hint错误
  • 0.4.0 / 2024-04-30:

    1. 重构完成,将所有数据迁移到官方数据库插件plugin-orm,之前的数据失效
    2. 修改了插件触发指令和相关逻辑
    3. 重构所有代码,优化处理逻辑

    该版本是破坏性更新,且仍在测试中,有任何疑问欢迎issue或pr

  • 0.3.8 / 2024-04-28:

    1. 修复设置错误
    2. 重构代码
  • 0.3.7 / 2024-04-24:

    1. 更新Nonebot2版本至2.2.0
    2. 基于 nonebot-plugin-alconna 适配多平台
    3. 放宽httpx限制,移除onebot依赖
  • 0.3.6 / 2023-09-02:

    1. 适配nonebot2.0.1版本:移除过时的RegexMatch方法

    如更新本插件后接受消息无响应,请更新你的nonebot版本或回退到旧版本使用

  • 0.3.5 / 2023-08-10:

    1. 格式化代码
    2. 优化配置读取
    3. 更新插件元数据
  • 0.3.5 / 2023-06-09:

    1. 更新httpx依赖版本
  • 0.3.3 / 2023-04-23:

    1. 修复定时提醒重复发送的bug
    2. 修改帮助
  • 0.3.2 / 2023-04-14:

    1. 删去了文本中所有奇怪的口癖喵
    2. 修复了订阅课程发送时间错误的bug
  • 0.3.0 / 2023-04-02:

    1. 修复bug
    2. 优化帮助图片
    3. 定时任务随机延后0-60s,防止风控
    4. 增加订阅指定课程的功能
  • 0.2.3 / 2023-03-29:

    1. 重构了代码,优化了许多地方真的累死了
    2. 修复了一些bug,优化了体验
    3. 增加了早八|明日早八的查询
    4. 更新版本后建议重新导入课表,避免出现某些bug
  • 0.2.1 / 2023-03-13:

    1. 修复订阅早八的一些bug
  • 0.2.0 / 2023-03-11:

    1. 修复了如果未登录小米账户就分享课表时的报错,增加错误提示
    2. 新增3项配置项,某日课表可选择以图片发送(默认为图片)
  • 0.1.8 / 2023-03-08:

    1. 修改部分代码,优化课表格式
    2. 修复了节数为11的课会排在节数为2的课程前面的bug(QAQ太蠢了别骂了别骂了)
  • 0.1.7 / 2023-03-07:

    1. 修复了时间不会自己改变的bug
    2. 新增了上课/下节课功能
    3. 优化了一些屎山代码
  • 0.1.5 / 2023-03-06:

    1. 新增了私聊订阅课表|早八的功能
  • 0.1.4 / 2023-03-05:

    1. 修复了无法取消订阅早八的bug

🎉命令

  • 课表帮助:获取本条帮助

  • 导入课表:需要有小爱课表分享出来的链接,打开小爱课程表,手动添加课程或从教务导入(已适配了大部分高校)课程后

    Image text

    在基本设置里把开始上课时间等调整好之后(尤其是时间、节数),把分享课表得到的链接发送给bot即可导入本地

[!NOTE] 在分享前,你需要登录小米账户 #1

  • 更新课表;如果在小爱课程表里修改了课程,发送该条指令即可更新本地的课表,无需重新导入

  • 查询课表+[参数]:查询[参数]的课表,参数支持[本周/下周、周x、昨天/今天/明天/后天、早八、课程名、下节课]

  • 添加课程提醒+[参数]:参数支持[周x、早八、课程名]

  • 删除课程提醒+[参数]:参数支持[全部、周x、早八、课程名]

  • 查看课程提醒:查看当前已经添加的课程提醒

⭐效果图

Image text Image text Image text Image text Image text Image text Image text

😥我不知道怎么使用小爱课程表

如下图

  • 首先要登录上小米账户,否则可能获取到错误的课表信息 #1
  • 设置好开始上课时间
  • 设置好课程时间,可以修改每节课具体的时间,
  • 课表节数按自己需求调,一般教务导入的课表节数可能不符合实际,需要微调
  • 每周起始日建议默认的周一即可
  • 如果导入课表后在小爱课表内修改了课程,直接给bot发送更新课表即可更新本地课表
  • 当你主页的课表和学校课表基本一致时,那么小爱课程表就被设置好了,可以导入了

Image text

🐦计划

  • 查询下节课的信息

  • 可选择是否发送图片以避免风控

  • 增加更多的配置项

  • 重构代码

  • 订阅指定的课

  • 多平台适配, 基于 nonebot-plugin-alconna

  • 支持定时任务本地存储

  • 适配plugin-orm, 接入数据库

  • 适配更多课表、脱离小爱课表

  • 完善插件

🐛存在的问题

[!NOTE] 在当前版本下,Bot重启后会失去之前创建过的任务,这个问题暂时无法解决

众所周知,使用apscheduler添加的定时任务,会在bot重启后丢失,这是因为使用nonebot-plugin-apscheduler创建出来的scheduler,默认使用的JobStore(即保存任务的方式),是MemoryJobStore,也就是存在内存中,因此会导致重启丢任务。

因此参考apscheduler,你可以在bot的配置文件中添加配置项,让nonebot-plugin-apscheduler创建出来的scheduler的默认 JobStore 改为使用数据库,这样就可以持久化存储任务,而不需要额外修改任何东西。

然而,很不幸的是,在apscheduler4.0版本之前,所支持的数据库类JobStore都是使用同步引擎的,不支持异步引擎,然而plugin-orm所采用的是异步引擎,因此你暂时还不能这样做。

所以,暂时还无法解决定时任务的持久化存储问题,除非apscheduler正式发版4.0(目前还是alpha版本),你可以再等待,本插件会持续跟进更新。

🎉致谢

✨喜欢的话就点个star吧

或者, 你也可以看我写的其他插件 nonebot-plugin-manga-translator一个支持多api(包括离线部署)、跨平台、方便好用的图片/漫画翻译插件

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_ai_timetable-0.4.1.tar.gz (18.9 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page