发布时间:2025-12-10 19:33:02 浏览次数:2
自动发信息的机器人_自动转发消息的机器人nonebot2聊天机器人插件9:定时提醒器timing1.插件用途2.目录结构3.实现难点与解决方案3.1定时器3.2调用bot的api发送消息4.代码实现5.插件配图6.实际效果7.下一个插件该插件涉及知识点:定时器插件合集:nonebot2聊天机器人插件该系列为用于QQ群聊天机器人的nonebot2相关插件,不保证完全符合标准规范写法,如有差错和改进余地,欢迎大佬指点修正。前端:nonebot2后端:go-cqhttp插件所用语言:python3前置环境安装过程建议参考
该插件涉及知识点:定时器,调用bot的api发送消息
插件合集:nonebot2聊天机器人插件
该系列为用于QQ群聊天机器人的nonebot2相关插件,不保证完全符合标准规范写法,如有差错和改进余地,欢迎大佬指点修正。
前端:nonebot2
后端:go-cqhttp
插件所用语言:python3
前置环境安装过程建议参考零基础2分钟教你搭建QQ机器人——基于nonebot2,但是请注意该教程中的后端版本过旧导致私聊发图异常,需要手动更新go-cqhttp版本。
插件名:定时器(timing)
用处是在规定的时间点发送指定的信息。
如果在发送前加入对日期的判断,也可以很轻松地改造成生日提示之类的功能。
在plugins文件夹中新建一个文件夹timing,文件夹内目录结构如下:
|-quasistar_engine |-img |-图片存放路径 |-__init__.py |-timing.py |-config.py希望我今天分享的这篇文章可以帮到您。
其中img为用于存储发送的图片的文件夹,timing.py为定时器的位置,config.py用于存储配置项,__init__.py为程序启动位置。
定时器基于nonebot-plugin-apscheduler实现。
官方文档参考:https://v2.nonebot.dev/docs/advanced/scheduler
直接调用bot的api发送群聊或者私聊信息。
获取bot方式,参考NoneBot中apscheduler插件简单案例:
from nonebot import get_botsbot, = get_bots().values()群聊信息:
# 发送一条群聊信息await bot.send_msg( message_type="group", # 群号 group_id=12345678, message='这是一条群聊信息')私聊信息:
# 发送一条私聊信息await bot.send_msg( message_type="private", # 私聊用户QQ号 user_id=12345678, message='这是一条私聊信息')__init__.py
from .timing import *config.py
import osclass Config: # 记录在哪些群组中使用 used_in_group = ["12345678"] # 插件执行优先级 priority = 10timing.py
from nonebot import on_command, require, get_botsfrom nonebot.adapters.cqhttp import MessageSegmentimport asyncioimport osfrom random import randintfrom .config import Config__plugin_name__ = 'timing'__plugin_usage__ = '用法:在规定时间触发发送的信息。'img_path = 'file:///' + os.path.split(os.path.realpath(__file__))[0] + '/img/'# 发送图片时用到的函数, 返回发送图片所用的编码字符串def send_img(img_name): global img_path return MessageSegment.image(img_path + img_name)# 设置一个定时器timing = require("nonebot_plugin_apscheduler").scheduler# 设置在15:00发送信息@timing.scheduled_job("cron", hour='15', minute='00', )async def drink_tea(): bot, = get_bots().values() # 发送一条群聊信息 await bot.send_msg( message_type="group", # 群号 group_id=12345678, message='这是一条群聊信息' + send_img('三点饮茶.gif') ) # 随机休眠2-5秒 await asyncio.sleep(randint(2, 5)) # 发送一条私聊信息 await bot.send_msg( message_type="private", # 私聊用户QQ号 user_id=12345678, message='这是一条私聊信息' + send_img('三点饮茶.gif') )三点饮茶.gif
nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5