NoneBot接入飞书机器人

目录

  • NoneBot简介

  • 环境配置

  • 搭建步骤

  • 安装NoneBot2

    • 创建机器人项目

    • 配置飞书对接

  • 配置bot.py

  • 运行机器人

NoneBot简介

logo
NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持。

需要注意的是,NoneBot2 仅支持 Python 3.8 以上版本。

环境配置

CentOS Stream release 9

Python 3.9.9

搭建步骤

安装NoneBot2

安装pipx

1
2
python -m pip install --user pipx
python -m pipx ensurepath

安装nb脚手架

1
pipx install nb-cli

创建机器人项目

安装脚手架完成后,可以使用nc create进入创建项目步骤。

分别选择:

bootstrap(初学者模式)按回车进入下一项

[?] Project Name:输入你的机器人项目名称后按回车进入下一项

[?] Witch driver(s) would you like to use? 使用上下方向键移动光标,空格键选择驱动器,可以多选。选中FastAPI(FastAPI驱动器)后按回车进入下一项

[?] Witch adapter(s) would you like to use? 选择方式同上,选择飞书(飞书协议)后按回车进入下一项

[?] Install dependencies now? (Y/n) 是否安装依赖,输入Y选择是,按回车进入下一项

[?] Create virtual enviroment? (Y/n) 是否创建虚拟环境,输入Y选择是,按回车进入下一项

[?] Which builtin plugin(s) would you like to use? 使用上下方向键移动光标,空格键选择内置插件,可以多选。选中echo后按回车完成创建

创建完成后显示如下提示:

1
2
3
4
5
6
7
8
9
10
11
Done!                                                                                                                          

Add following packages to your project using dependency manager like poetry or pdm:

nonebot2[fastapi] nonebot-adapter-feishu

Run the following command to start your bot:

cd <your bot program name>

nb run --reload

提示机器人项目创建成功,可以进入bot文件夹,使用nb run –reload运行机器人。

配置飞书对接

在.env下配置机器人的密钥等信息
FEISHU_BOTS=[{"app_id":"<your app_id>","app_secret":"<your app_secret>","verification_token":"<your app_verification_token>","encrypt_key":"<your encrypt_key>","is_lark":false}]
同时还可以配置机器人监听的IP+端口信息等:

1
2
3
4
5
6
7
DRIVER=~fastapi                                                                                                                   

HOST=0.0.0.0

PORT=8080

LOG_LEVEL=0

配置飞书事件订阅
打开机器人后台,将机器人的事件订阅上报入口配置为:

1
http://$HOST:$PORT/feishu/$app_id

配置bot.py

在bot.py中添加如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
import nonebot
from nonebot.adapters.feishu import Adapter as FeishuAdapter

#初始化机器人
nonebot.init()

#指定适配器为飞书协议
driver = nonebot.get_driver()
driver.register_adapter(FeishuAdapter)

#运行机器人
nonebot.run()

编写插件
插件demo:

vim yourrebot/src/plugins

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*- coding: utf-8 -*-
import json
import requests
from nonebot import on_command
from nonebot.rule import to_me
from nonebot.matcher import Matcher
from nonebot.adapters import Message
from nonebot.params import Arg, CommandArg, ArgPlainText
from nonebot.typing import T_State
from nonebot.adapters.feishu import Bot as FeishuBot, MessageEvent
from nonebot.adapters.feishu import MessageSegment

help = on_command("help", rule=to_me(), aliases={"help", "帮助"}, priority=5)

@help.handle()
async def handle_func():
#await help.send("你可以尝试对我说:XXXXXXXXX")
#await help.send(MessageSegment.image(image_key="img_v2_11xxxxx17-f751-4e86-8f2d-43fd4b231edg"))
#这里可以写关键词命中后的业务逻辑

导入插件

在bot.py文件内,初始化nonebot.init()和nonebot.run()中间插入

onebot.load_plugins(“src/plugins/“)

运行机器人

执行nb run --reloadpython bot.py开启机器人,关注console打印的日志信息。


NoneBot接入飞书机器人
http://example.com/2023/02/26/NoneBot接入飞书机器人/
作者
SoulXM
发布于
2023年2月26日
许可协议