Giter Club home page Giter Club logo

nonebot-plugin-session's Introduction

nonebot

nonebot-plugin-session

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

license Python NoneBot pypi

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

具体定义如下:

属性 类型 含义 备注
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
  • QQ
  • Satori
  • DoDo

相关插件

鸣谢

nonebot-plugin-session's People

Contributors

meetwq avatar github-actions[bot] avatar he0119 avatar pre-commit-ci[bot] avatar ssttkkl avatar cmhopesunshine avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.