NoneBot2给QQ机器人注入灵魂

go-cqhttp搭建的机器人只能做些简单的事情,所以让 NoneBot2 给机器人注入灵魂吧!NoneBot2搭配go-cqhttp构建QQ机器人。

跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python https://nonebot.dev
6882 631

一、项目详情

1、简介

NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。

除了起到解析事件的作用,NoneBot 还为插件提供了大量实用的预设操作和权限控制机制。对于命令处理,它更是提供了完善且易用的会话机制和内部调用机制,以分别适应命令的连续交互和插件内部功能复用等需求。

得益于 Python 的 asyncio 机制,NoneBot 处理事件的吞吐量有了很大的保障,再配合 WebSocket 通信方式(也是最建议的通信方式),NoneBot 的性能可以达到 HTTP 通信方式的两倍以上,相较于传统同步 I/O 的 HTTP 通信,更是有质的飞跃。

2、特色

NoneBot2 的驱动框架 Driver 以及通信协议 Adapter 均可自定义,并且可以作为插件进行替换/添加

目前 NoneBot2 内置的驱动框架:

目前 NoneBot2 官方维护的协议适配:

商店 | NoneBot

二、项目配置

1、环境配置

首先,我们需要提前安装python3.7或以上版本。检查Python版本:

python -v

如果版本低于3.7,则更改安装版本,参考资料:

升级Centos7.5的默认Python版本至最新_韩以安

不要用宝塔面板的Python项目管理器,没用!

2、安装依赖

pip install nb-cli
pip install nonebot-adapter-cqhttp

3、安装go-cqhttp

参考资料:Go语言全平台QQ机器人搭建 – 松子分享

4、修改配置

编辑go-cqhttp项目文件夹内的config.yml文件

# 反向WS设置
- ws-reverse:
# 反向WS Universal 地址
# 注意 设置了此项地址后下面两项将会被忽略
universal: ws://127.0.0.1:自定义端口号/cqhttp/ws

记住这里的自定义端口号,后面要用。

5、新建机器人

在网站根目录执行:

# nb
# Create a New Project
# Project Name: lin
# In a "src" folder
# Load NoneBot Builtin Plugin? (y/N) n
[?] Which adapter(s) would you like to use? (<up>, <down> to move, <space> to select, <a> to toggle, <i> to invert)
❯cqhttp
ding
mirai
gocq

生成的目录结构如下(命令cd linls

lin
├── Dockerfile
├── README.md
├── bot.py
├── docker-compose.yml
├── pyproject.toml
└── src
└── plugins

6、修改配置

修改bot.py文件(命令vi bot.py)(添加第5、18行)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import nonebot
from nonebot.adapters.cqhttp.bot import Bot
# from nonebot.adapters.cqhttp.bot import Bot
# Custom your logger
#
# from nonebot.log import logger, default_format
# logger.add("error.log",
# rotation="00:00",
# diagnose=False,
# level="ERROR",
# format=default_format)
# You can pass some keyword args config to init function
nonebot.init()
nonebot.get_driver().register_adapter("cqhttp", Bot)
app = nonebot.get_asgi()
driver = nonebot.get_driver()
nonebot.load_from_toml("pyproject.toml")
# Modify some config / config depends on loaded configs
#
# config = driver.config
# do something...
if __name__ == "__main__":
nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")
nonebot.run(app="__mp_main__:app")

保存后,编辑 .env.prod 文件(命令 vi .env.prod

HOST=127.0.0.1
PORT=之前设置的端口
DEBUG=False
SUPERUSERS=["123456","234567"]
COMMAND_START=["/","!!"]

注释:SUPERUSERS内是超级管理员QQ号;COMMAND_START 命令的起始符号,即以此列表中的所有符号作为起始的消息会被识别为“命令”

修改 .env 文件(命令 vi .env

ENVIRONMENT=prod

7、编写插件

进入 lin/src/plugins 文件夹,新建文件 welcome.py 并编辑保存

cd lin/src/plugins
vi welcome.py
from nonebot import on_notice
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, Message, GroupDecreaseNoticeEvent, GroupIncreaseNoticeEvent
welcome = on_notice()
#朋友加群
@welcome.handle()
async def _(bot: Bot, event:GroupIncreaseNoticeEvent, state: T_State):
user = event.get_user_id()
at_ = "[CQ:at,qq={}]".format(user)
msg = at_ + '欢迎新朋友的加入!'
msg = Message(msg)
await welcome.finish(message=msg)
#群友退群
@welcome.handle()
async def _(bot: Bot, event:GroupDecreaseNoticeEvent, state: T_State):
user = event.get_user_id()
at_ = "[CQ:at,qq={}]".format(user)
msg = at_ + '\n' + '一位朋友离我们而去!'
msg = Message(msg)
await welcome.finish(message=msg)

8、运行项目

进入go-cqhttp项目文件夹执行

./go-cqhttp

进入机器人文件夹(命令 cd lin)执行

python3 bot.py

9、项目测试

拉几个小号测试一下

10、进程守护

建议使用PM2管理器守护进程:

pm2 start bot.py --name="nonebot"
pm2 save
pm2 startup

三、参考资料

1、GitHub – nonebot/nonebot2: 跨平台Python异步机器人框架

2、【QQBot】基于 go-cqhttp + nonebot2 搭建的QQ机器人_aBBBBBear的博客

3、使用NoneBot2搭建QQ机器人第一章*Hello World——安装并配置你的机器人 – 知乎

4、升级Centos7.5的默认Python版本至最新_韩以安

5、NoneBot2文档

本文采用 CC BY-NC-SA 3.0 Unported 许可,转载请以超链接注明出处。
原文地址:NoneBot2给QQ机器人注入灵魂 作者:松鼠小
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
Source: Telegram @AmashiroNatsukiEars_NoWord Sticker
Source: Github @zhheo/Sticker-Heo
Source: github.com/k4yt3x/flowerhd
颜文字
AmashiroNatsukiEars
Heo
小恐龙
花!
上一篇
下一篇
  1. 1 Rain after Summer 羽肿
  2. 2 潮鳴り VISUAL ARTS / Key
  3. 3 Inspire Capo Productions
  4. 4 Hyacinth July
  5. 5 My Soul July
  6. 6 Best Moments (feat. Kondor) Blazo/Kondor
  7. 7 Lost Love (Instrumental) Lunnna/Janey杰尼
  8. 8 风居住的街道(Piano ver) (翻自 磯村由紀子) 饭碗的彼岸
  9. 9 Beyond The Memory July
  10. 10 メインテーマ「永遠の一瞬」 伊藤賢治
  11. 11 Journey Capo Productions
  12. 12 Flower Dance DJ Okawari
  13. 13 Righteous Path Blazo
  14. 14 いのちの名前 広橋真紀子
  15. 15 花火が瞬く夜に 羽肿
  16. 16 记得 风潮音乐
  17. 17 Encouragement Kondor
  18. 18 Rise - Epic Music John Dreamer
  19. 19 A Little Story Valentin
  20. 20 City 羽肿
  21. 21 《夜色钢琴曲》kiss the rain(翻自 YIRUMA) 赵海洋
  22. 22 Moon Flow Nomak
  23. 23 River Flows in You Yiruma
  24. 24 白昼之夜 林隆璇
  25. 25 LOVIN' YOU 押尾コータロー
  26. 26 ALONE ON THE WAY Pianoboy高至豪
  27. 27 Intro The xx
  28. 28 Somewhere July
  29. 29 我在那一角落患过伤风(钢琴版) 群星
  30. 30 Rainy Day Reminiscence Soulostar
  31. 31 Refrain 阿南亮子
  32. 32 STEPPING ON THE RAINY STREET 群星
  33. 33 Angel and Devil Elyonbeats
  34. 34 Butterfly Waltz Brian Crain
  35. 35 Mallow Flower Otokaze
  36. 36 The truth that you leave Pianoboy高至豪
  37. 37 canon in d Brian Crain
  38. 38 めぐる季節 久石譲/奥户巴寿
  39. 39 拥有 几米
  40. 40 碎月雨中奏 iw ix
  41. 41 Always With Me 木村弓/奥户巴寿
  42. 42 Everlasting Truth (Album Mix) re:plus
  43. 43 The promise Secret Garden
  44. 44 Luv Letter DJ Okawari
Rain after Summer - 羽肿
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作曲 : 羽肿

纯音乐,请欣赏