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
- QQ Guild
- Telegram
- Feishu
- RedProtocol
- Discord
- Satori
相关插件
- 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.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3cbf4f7b180fda35fc035da6f474f3a1d06581f7498d40f52badad5ebdee36e |
|
MD5 | e617d1d892bf1b98647108f376171c04 |
|
BLAKE2b-256 | 3d49796720c7768f3daf42cb0bc76a4d7ad7a570870787fe8fde855bcebbb1ea |
Close
Hashes for nonebot_plugin_session-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f23dca9f9d6ffcb8d556bf982843904bec6302e90fb6a19f2b333f349581d1f5 |
|
MD5 | d60ba08c6c4904a09b31288562349aa6 |
|
BLAKE2b-256 | ee3755b649b35d680a22bf0b8cf4fdd5ad78946a016f69ecdeba0cbbc799d27c |