首页 > 其他分享 >NoneBot2聊天机器人自定义聊天内容

NoneBot2聊天机器人自定义聊天内容

时间:2023-01-09 14:11:50浏览次数:68  
标签:NoneBot2 自定义 city Demo nonebot 文件夹 聊天 weather import

1、按照上一篇文章所介绍的方法新建一个机器人,进入所对应的文件夹,会发现里面有一个和自己所创建的机器人名称一样的文件夹

 

 

 2、进入该文件夹,会发现一个名叫plugins的文件夹

 

 

 3、自定义插件

  注:插件的定义方式有两种,一种是在plugins文件夹下创建一个.py文件;另一种方式是现在plugins文件夹下创建一个新文件夹,再在该文件夹下创建一个__init__.py文件(下划线两条杠)

  具体参考文档:https://v2.nonebot.dev/docs/tutorial/plugin/introduction

4、编写相应代码

import nonebot
from nonebot.matcher import Matcher
from nonebot.rule import to_me
from nonebot.adapters import Message
from nonebot.params import Arg, CommandArg, ArgPlainText
from nonebot import on_command



Demo = on_command('weather', rule=to_me(), aliases={"天气情况", "天气预报"})
 
@Demo.handle()
async def test_handle(matcher: Matcher, args: Message=CommandArg()):
    plain_text = args.extract_plain_text()
    if plain_text:
        matcher.set_arg("city", args)
    
@Demo.got("city", prompt="你想查询哪个城市的天气呢?")
async def handle_city(city:Message=Arg(), city_name: str=ArgPlainText("city")):
    if city_name not in ["北京", "上海"]:
        city_weather = await Demo.reject(city.template("你想查询的城市 {city} 暂不支持,请重新输入!"))
    city_weather = await get_weather(city_name)
    await Demo.finish(city_weather)


async def get_weather(city: str) -> str:
    return f"{city}今天的天气是晴天."
        
    

相应函数使用文档如下:

  https://v2.nonebot.dev/docs/api/plugin/on#on_command

  https://v2.nonebot.dev/docs/tutorial/plugin/matcher-operation

  https://v2.nonebot.dev/docs/tutorial/plugin/create-handler

5、启动NoneBot、cqhttp(详情可参考上篇文章)

nb run
.\go-cqhttp.exe

6、 测试

 

标签:NoneBot2,自定义,city,Demo,nonebot,文件夹,聊天,weather,import
From: https://www.cnblogs.com/ReturnOfTheKing/p/17036826.html

相关文章

  • 当你自定义一个删除的delete方法时,不加事务注解,报错
    报错:cannotreliablyprocess'remove'call要用的注解:@Modifying@TransactionalintdeleteUserByUserName(Stringusername); 参考:jpa报错:NoEntityM......
  • 聊天秘诀:抬高别人,压低自己。显得谦虚。
    某男的去女的家里相亲。女孩子问男孩子你什么学历?男:初中学历。女一阵寒暄,真辛苦啊那么小就出去学技术。然后男孩子反问女方。女:高中毕业。男:咱两差不多,哈哈哈。女方脸一......
  • 39、商品服务--品牌管理--JSR303自定义校验注解
    假若SpringMvc提供的校验注解不能满足我们的要求,我们就自己写一个1、编写一个自定义校验注解(即编写一个注解类--Annotation类)参考其他的注解,来编写我们自己的注解我......
  • 图文并茂strapi 4.5.5自定义搭建指南以及数据库字段名接口返回mapping分析
    strapi是什么?基于Nodejs的开源免费CMS框架为什么选择它?基于nodejs,100%JavaScript,上手迅速可轻松创建功能强大且可自定义的API可以使用任何喜欢的数据库先决条件首......
  • 4.2JS中自定义对象
    ​ JS中自定义对象JS除了一些常用方法和类以外,允许我们自己定义对象,在JS中自定义对象有三种可用的语法格式,分别为:1调用系统的构造函数创建对象2自定义构造函数创......
  • 4.2JS中自定义对象
    ​ JS中自定义对象JS除了一些常用方法和类以外,允许我们自己定义对象,在JS中自定义对象有三种可用的语法格式,分别为:1调用系统的构造函数创建对象2自定义构造函数创......
  • 自定义JeeSite组件DataGrid中的单选钮radio编辑项
    继续说说JeeSite中提供的DataGrid组件。作为传统的后端生成前端使用JqGrid来显示列表数据是非常方便的,JeeSite框架将JqGrid进行了包装,简化和规范了使用值得称赞,但毕竟JqGri......
  • Airtest学习笔记之自定义启动器
    小站注:之前在《Airtest命令行运行airtestrun详解》中讲解到runner.py就没讲了,这篇里详细讲了runner.py的代码通过本篇,你将了解到Airtest的自定义启动器的运用,以及air......
  • Airtest自定义启动器支持批量运行脚本,并兼容在AirtestIDE中使用
    小站注:上期详细讲了Airtest启动器的原理,以及在最后给出了2个实现方案。本次是第2个方案的另一个实现案例,供大家学习参考。Pythonv3.7.0/Airtest:1.1.1/PocoUI:......
  • ExtJS-自定义组件的UI
    转载请注明出处:https://www.cnblogs.com/cqpanda/p/17031484.htmlExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html更新记录2023年1月6日从笔记迁移到......