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.9.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | cde356263d94a95a57aa9ee54ee14e03d816a65014fc49547fb1171b98d541f3 |
|
MD5 | ea843ea537310d4e2c042003067ef4b2 |
|
BLAKE2b-256 | 1c36a547319dad108c751a69eb0b28358b7de77de23a7b25a0e4a59b68437bab |
Close
Hashes for nonebot_plugin_session-0.0.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d0f82f74bec9bc78f85f82c8ed130aaeef08dc1d78d429df47a73c69d5af824 |
|
MD5 | b7b4dd3c748471c25822c9d1f72ee5a2 |
|
BLAKE2b-256 | 2f2fbc57d9bec94dd3e049681926cd2788dfeff9e9f7c94a68b09cfdb9c5bb30 |