Nonebot2 会话信息提取与会话id定义
Project description
- 这个插件可以做什么?
本插件提供了一个统一的会话模型 Session
,
可以从不同适配器的 Bot
和 Event
中提取与会话相关的
“平台”、“会话等级”(单用户、单级群组、两级群组)、“目标 id” 等属性;
同时提供了获取会话 id 的函数,可以按照不同的类型获取会话id,方便不同场景下的使用
- 这个插件解决了什么问题?
Nonebot 适配器基类中提供了 get_session_id
函数用于获取会话 id,
但这一结果通常是 用户 id、群组 id 的组合,属于 “用户级别” 的 id,
但在很多插件中,需要用到 “群组级别” 的会话 id,如词云、词库等等
本插件可以为不同适配器提供一个统一的、可选级别的会话 id 定义方式
安装
- 使用 nb-cli
nb plugin install nonebot_plugin_session
- 使用 pip
pip install nonebot_plugin_session
使用
获取 Session
:
from nonebot_plugin_session import extract_session
@matcher.handle()
async def handle(bot: Bot, event: Event):
session = extract_session(bot, event)
获取 session id
:
from nonebot_plugin_session import SessionId, SessionIdType
@matcher.handle()
async def handle(session_id: str = SessionId(SessionIdType.GROUP)):
# 获取 “群组级别” 的 session id
...
将 Session
存至数据库中(需要安装 nonebot-plugin-datastore 插件)
from nonebot_plugin_session import extract_session
from nonebot_plugin_session.model import get_or_add_session_model
@matcher.handle()
async def handle(bot: Bot, event: Event):
session = extract_session(bot, event)
model = await get_or_add_session_model(session) # 可关联其他表用于筛选等
从 Session
中获取 saa
的 PlatformTarget
对象用于发送(需要安装 nonebot-plugin-send-anything-anywhere 插件)
from nonebot_plugin_session import extract_session
@matcher.handle()
async def handle(bot: Bot, event: Event):
session = extract_session(bot, event)
target = session.get_saa_target() # 用于发送
不同的 “会话级别” 与 “会话id类型” 下返回的 id 如下表所示:(不包含 bot_id
等属性的情况)
LEVEL0 (无用户) |
LEVEL1 (单用户) |
LEVEL2 (单级群组) |
LEVEL3 (两级群组) |
|
---|---|---|---|---|
TYPE0 (GLOBAL) | "" |
"" |
"" |
"" |
TYPE1 (USER) | "" |
"id1" |
"id1" |
"id1" |
TYPE2 | "" |
"id1" |
"id2" |
"id2" |
TYPE3 | "" |
"id1" |
"id2_id1" |
"id2_id1" |
TYPE4 | "" |
"id1" |
"id2" |
"id3" |
TYPE5 | "" |
"id1" |
"id2_id1" |
"id3_id1" |
TYPE6 (GROUP) | "" |
"id1" |
"id2" |
"id3_id2" |
TYPE7 (GROUP_USER) | "" |
"id1" |
"id2_id1" |
"id3_id2_id1" |
支持的 adapter
OneBot v11 | OneBot v12 | Console | Kaiheila | QQ Guild |
---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ |
鸣谢
- nonebot-plugin-send-anything-anywhere 项目的灵感来源以及部分实现的参考
- uy/sun 感谢歪日佬的技术支持
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for nonebot_plugin_session-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a50950522fc063eac102fadf9d935116f84e3f1ee82bf691e86a9e0bf03b44f |
|
MD5 | 2147ca9fe5e0bab0c236caebad5fed03 |
|
BLAKE2b-256 | 3e6c920e0ab311534a38cdc88833c10635f73f7700c23e3ccd048e967ec539e2 |
Close
Hashes for nonebot_plugin_session-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00fdd17f2077f9a300da1ca62d92b04da15e34e173702b3b1fd43205745cd3db |
|
MD5 | 19cc105e7359c92483efd9d869e518b8 |
|
BLAKE2b-256 | 79d98183c739dfd9e6bd7a643584465ae46ea6d75c5b5a0b06a0be2ae7b48c78 |