Nonebot2 会话信息提取与会话id定义
Project description
本插件提供了一个统一的会话模型 Session
,可以从不同适配器的 Bot
和 Event
中提取与会话相关的属性
具体定义如下:
属性 | 类型 | 含义 | 备注 |
---|---|---|---|
bot_id |
str |
机器人 id | |
bot_type |
str |
机器人类型(适配器名称) | |
platform |
str |
平台 | 未知平台用 unknown 表示 |
level |
IntEnum |
会话等级 | 目前分为 LEVEL0(无用户)、LEVEL1(单用户)、LEVEL2(单级群组)、LEVEL3(两级群组) 四类 |
id1 |
str |
1 级 id | 通常为 user_id |
id2 |
str |
2 级 id | 通常为 单级群组中的 group_id ,两级群组中的 channel_id |
id3 |
str |
3 级 id | 通常为 两级群组中的 guild_id |
同时,本插件提供了获取会话 id 的函数,可以按照不同的类型获取会话id,方便不同场景下的使用
Nonebot 适配器基类中也提供了 get_session_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)
或使用依赖注入的形式:
from nonebot_plugin_session import EventSession
@matcher.handle()
async def handle(session: EventSession):
...
获取 session id
:
from nonebot_plugin_session import extract_session, SessionIdType
@matcher.handle()
async def handle(bot: Bot, event: Event):
session = extract_session(bot, event)
session_id = session.get_id(SessionIdType.GROUP) # 获取 “群组级别” 的 session id
或使用依赖注入的形式:
from nonebot_plugin_session import SessionId, SessionIdType
@matcher.handle()
async def handle(session_id: str = SessionId(SessionIdType.GROUP)):
...
不同的 “会话级别” 与 “会话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
- Telegram
- Feishu
- RedProtocol
- Discord
- Satori
- DoDo
相关插件
- nonebot-plugin-session-orm 为 session 提供数据库模型及存取方法
- nonebot-plugin-session-saa 提供从 session 获取 saa 发送对象 PlatformTarget 的方法
鸣谢
- 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.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34baadb01390771cd9548c71d7146e774fb9cc4480cc87833b05d49f616a6126 |
|
MD5 | 34a933e8c64b9eac5861ada526ee0784 |
|
BLAKE2b-256 | 352186dcb3330c0a63ad903e5822d7b3ef081aed416baeac1745edeae9edef7e |
Close
Hashes for nonebot_plugin_session-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 778f85cc205b0fff02bf9f10815575bb27ff02fe8c76e5d757a2138a9902ba66 |
|
MD5 | 7f2a6ae8e421c63d32b0361d697f4f80 |
|
BLAKE2b-256 | f7fcfe499ff270c59d91bf29b6e16bb63f22ebe042593c88e8b8c78ec9a1dae7 |