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_datastore import create_session
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)
async with create_session() as db_session:
session_model = await get_or_add_session_model(session, db_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 | Telegram |
---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
鸣谢
- 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.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b311e6771d2eb537785cb629f473ceeb612a0654cf4e109d2d1c9db7b6573b75 |
|
MD5 | eca4de768f0a6243f01c45407f746559 |
|
BLAKE2b-256 | 821ffb54f0afb17d84254f6167526b2ba5e811596194c65fd4915be8234476ac |
Close
Hashes for nonebot_plugin_session-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 830d500d34004d330c4c08013dcd56557c004db673d2f74db8d32f08da227409 |
|
MD5 | f1758b332d1f6dc949908c6cebb21231 |
|
BLAKE2b-256 | b1384b5c14f322eac6234bab7f5cf36be52684beec5744a6a3d14ab8e3e16a8b |