NoneBot2插件——今日人品

该博客介绍了如何使用NoneBot框架的on_command函数注册一个命令响应器,以实现聊天机器人对特定命令的响应。通过设置命令名称、别名、优先级等参数,可以定制机器人的交互行为。在示例中,创建了一个名为'jrrp'的命令,用于生成随机幸运指数并反馈给用户。此功能展示了NoneBot在构建聊天机器人时的灵活性和易用性。
摘要由CSDN通过智能技术生成

参考:https://v2.nonebot.dev/api/plugin.html

on_command(cmd, rule=None, aliases=None, **kwargs)函数

  • 说明

注册一个消息事件响应器,并且当消息以指定命令开头时响应。
命令匹配规则参考: 命令形式匹配

  • 参数

    • cmd: Union[str, Tuple[str, …]]: 指定命令内容

    • rule: Optional[Union[Rule, T_RuleChecker]]: 事件响应规则

    • aliases: Optional[Set[Union[str, Tuple[str, …]]]]: 命令别名

    • permission: Optional[Permission]: 事件响应权限

    • handlers: Optional[List[Union[T_Handler, Handler]]]: 事件处理函数列表

    • temp: bool: 是否为临时事件响应器(仅执行一次)

    • priority: int: 事件响应器优先级

    • block: bool: 是否阻止事件向更低优先级传递

    • state: Optional[T_State]: 默认 state

    • state_factory: Optional[T_StateFactory]: 默认 state 的工厂函数

  • 返回

    -Type[Matcher]

__init__.py 文件
import random
from datetime import date
from nonebot.plugin import on_command, export
from nonebot.adapters.cqhttp import Bot, Event
from nonebot.adapters.cqhttp.message import Message

export = export()
export.name = '今日人品'
export.usage = '''/jrrp'''

def luck_simple(num):
    if num < 18:
        return '大吉'
    elif num < 53:
        return '吉'
    elif num < 58:
        return '半吉'
    elif num < 62:
        return '小吉'
    elif num < 65:
        return '末小吉'
    elif num < 71:
        return '末吉'
    else:
        return '凶'

"""ON_COMMAND
ON_COMMAND是MFC提供的宏,实现命令消息(如菜单、工具栏的选项消息)的消息响应函数的注册。
使用方法为ON_COMMAND(消息ID, 响应函数名)
注册了响应函数之后,一旦主窗口接收到该命令消息,程序就会调用我们提供的消息响应函数进行处理

"""
jrrp = on_command('jrrp', priority=50)  # 接收关键字
"""
在上方代码中,我们注册了一个事件响应器 Matcher,它由几个部分组成:
on_command 注册一个消息类型的命令处理器
"天气" 指定 jrrp 参数 - 命令名
rule 补充事件响应器的匹配规则
priority 事件响应器优先级
block 是否阻止事件传递
"""


"""handle()
简单的为事件响应器添加一个事件处理函数,这个函数将会在上一个处理函数正常返回执行完毕后立即执行。
"""
@jrrp.handle()  # 监听 jrrp
async def jrrp_handle(bot: Bot, event: Event):
    rnd = random.Random()
    rnd.seed((int(date.today().strftime("%y%m%d")) * 45) * (int(event.get_user_id()) * 55))
    lucknum = rnd.randint(1, 100)  # 1 到 100的数

    # 返回QQ号, 发送消息
    await jrrp.finish(message=Message(f'[CQ:at,qq={event.get_user_id()}]您今日的幸运指数是{lucknum}/100(越低越好),为"{luck_simple(lucknum)}"'))

文件编写完成后,存放在 plugins 目录下。plug

调用结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值