Home

Awesome

<div align="center"> <a href="https://nonebot.dev/"> <img src="https://nonebot.dev/logo.png" width="200" height="200" alt="nonebot"> </a>

nonebot-plugin-session

Nonebot2 会话信息提取与会话 id 定义插件 ✨

<p align="center"> <img src="https://img.shields.io/github/license/noneplugin/nonebot-plugin-session" alt="license"> <img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python"> <img src="https://img.shields.io/badge/nonebot-2.3.0+-red.svg" alt="NoneBot"> <a href="https://pypi.org/project/nonebot-plugin-session"> <img src="https://badgen.net/pypi/v/nonebot-plugin-session" alt="pypi"> </a> </p> </div>

本插件提供了一个统一的会话模型 Session,可以从不同适配器的 BotEvent 中提取与会话相关的属性

具体定义如下:

属性类型含义备注
bot_idstr机器人 id
bot_typestr机器人类型(适配器名称)
platformstr平台未知平台用 unknown 表示
levelIntEnum会话等级目前分为 LEVEL0(无用户)、LEVEL1(单用户)、LEVEL2(单级群组)、LEVEL3(两级群组) 四类
id1str1 级 id通常为 user_id
id2str2 级 id通常为 单级群组中的 group_id,两级群组中的 channel_id
id3str3 级 id通常为 两级群组中的 guild_id

同时,本插件提供了获取会话 id 的函数,可以按照不同的类型获取会话id,方便不同场景下的使用

Nonebot 适配器基类中也提供了 get_session_id 函数,但通常是 用户 id、群组 id 的组合,属于 “用户级别” 的 id,很多插件中需要用到不同级别的会话 id,如词云、词库等等

安装

nb plugin install nonebot_plugin_session
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<br>(无用户)LEVEL1<br>(单用户)LEVEL2<br>(单级群组)LEVEL3<br>(两级群组)
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

相关插件

鸣谢