nonebot2/docs/api/adapters/mirai.md
2021-01-31 17:05:56 +00:00

20 KiB
Raw Blame History

contentSidebar sidebarDepth
true 0

NoneBot.adapters.mirai 模块

Mirai-API-HTTP 协议适配

协议详情请看:

`mirai-api-http 文档`_

NoneBot.adapters.mirai.bot 模块

class SessionManager

基类:object

Bot会话管理器, 提供API主动调用接口

async post(path, *, params=None)

  • 说明

    以POST方式主动提交API请求

  • 参数

    • path: str: 对应API路径

    • params: Optional[Dict[str, Any]]: 请求参数 (无需sessionKey)

  • 返回

    • Dict[str, Any]: API 返回值

async request(path, *, params=None)

  • 说明

    以GET方式主动提交API请求

  • 参数

    • path: str: 对应API路径

    • params: Optional[Dict[str, Any]]: 请求参数 (无需sessionKey)

  • 返回

    • Dict[str, Any]: API 返回值

class MiraiBot

基类:nonebot.adapters.Bot

mirai-api-http 协议 Bot 适配。

property api

返回该Bot对象的会话管理实例以提供API主动调用

async call_api(api, **data)

由于Mirai的HTTP API特殊性, 该API暂时无法实现

async send(event, message, at_sender=False)

  • 说明

    根据 event 向触发事件的主题发送信息

  • 参数

    • event: Event: Event对象

    • message: Union[MessageChain, MessageSegment, str]: 要发送的消息

    • at_sender: bool: 是否 @ 事件主题

  • 返回

    • Any: API 调用返回数据

async send_friend_message(target, message_chain)

  • 说明

    使用此方法向指定好友发送消息

  • 参数

    • target: int: 发送消息目标好友的 QQ 号

    • message_chain: MessageChain: 消息链,是一个消息对象构成的数组

  • 返回

    • Any: API 调用返回数据

async send_temp_message(qq, group, message_chain)

  • 说明

    使用此方法向临时会话对象发送消息

  • 参数

    • qq: int: 临时会话对象 QQ 号

    • group: int: 临时会话群号

    • message_chain: MessageChain: 消息链,是一个消息对象构成的数组

  • 返回

    • Any: API 调用返回数据

async send_group_message(group, message_chain, quote=None)

  • 说明

    使用此方法向指定群发送消息

  • 参数

    • group: int: 发送消息目标群的群号

    • message_chain: MessageChain: 消息链,是一个消息对象构成的数组

    • quote: Optional[int]: 引用一条消息的 message_id 进行回复

  • 返回

    • Any: API 调用返回数据

async recall(target)

  • 说明

    使用此方法撤回指定消息。对于bot发送的消息有2分钟时间限制。对于撤回群聊中群员的消息需要有相应权限

  • 参数

    • target: int: 需要撤回的消息的message_id
  • 返回

    • Any: API 调用返回数据

async send_image_message(target, qq, group, urls)

  • 说明

    使用此方法向指定对象(群或好友)发送图片消息 除非需要通过此手段获取image_id否则不推荐使用该接口

    当qq和group同时存在时表示发送临时会话图片qq为临时会话对象QQ号group为临时会话发起的群号

  • 参数

    • target: int: 发送对象的QQ号或群号可能存在歧义

    • qq: int: 发送对象的QQ号

    • group: int: 发送对象的群号

    • urls: List[str]: 是一个url字符串构成的数组

  • 返回

    • List[str]: 一个包含图片imageId的数组

async upload_image(type, img)

  • 说明

    使用此方法上传图片文件至服务器并返回Image_id

  • 参数

    • type: str: "friend" 或 "group" 或 "temp"

    • img: BytesIO: 图片的BytesIO对象

  • 返回

    • Any: API 调用返回数据

async upload_voice(type, voice)

  • 说明

    使用此方法上传语音文件至服务器并返回voice_id

  • 参数

    • type: str: 当前仅支持 "group"

    • voice: BytesIO: 语音的BytesIO对象

  • 返回

    • Any: API 调用返回数据

async fetch_message(count=10)

  • 说明

    使用此方法获取bot接收到的最老消息和最老各类事件 (会从MiraiApiHttp消息记录中删除)

  • 参数

    • count: int: 获取消息和事件的数量

async fetch_latest_message(count=10)

  • 说明

    使用此方法获取bot接收到的最新消息和最新各类事件 (会从MiraiApiHttp消息记录中删除)

  • 参数

    • count: int: 获取消息和事件的数量

async peek_message(count=10)

  • 说明

    使用此方法获取bot接收到的最老消息和最老各类事件 (不会从MiraiApiHttp消息记录中删除)

  • 参数

    • count: int: 获取消息和事件的数量

async peek_latest_message(count=10)

  • 说明

    使用此方法获取bot接收到的最新消息和最新各类事件 (不会从MiraiApiHttp消息记录中删除)

  • 参数

    • count: int: 获取消息和事件的数量

async messsage_from_id(id)

  • 说明

    通过messageId获取一条被缓存的消息 使用此方法获取bot接收到的消息和各类事件

  • 参数

    • id: int: 获取消息的message_id

async count_message()

  • 说明

    使用此方法获取bot接收并缓存的消息总数注意不包含被删除的

async friend_list()

  • 说明

    使用此方法获取bot的好友列表

  • 返回

    • List[Dict[str, Any]]: 返回的好友列表数据

async group_list()

  • 说明

    使用此方法获取bot的群列表

  • 返回

    • List[Dict[str, Any]]: 返回的群列表数据

async member_list(target)

  • 说明

    使用此方法获取bot指定群种的成员列表

  • 参数

    • target: int: 指定群的群号
  • 返回

    • List[Dict[str, Any]]: 返回的群成员列表数据

async mute(target, member_id, time)

  • 说明

    使用此方法指定群禁言指定群员(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

    • member_id: int: 指定群员QQ号

    • time: int: 禁言时长单位为秒最多30天

async unmute(target, member_id)

  • 说明

    使用此方法指定群解除群成员禁言(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

    • member_id: int: 指定群员QQ号

async kick(target, member_id, msg)

  • 说明

    使用此方法移除指定群成员(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

    • member_id: int: 指定群员QQ号

    • msg: str: 信息

async quit(target)

  • 说明

    使用此方法使Bot退出群聊

  • 参数

    • target: int: 退出的群号

async mute_all(target)

  • 说明

    使用此方法令指定群进行全体禁言(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

async unmute_all(target)

  • 说明

    使用此方法令指定群解除全体禁言(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

async group_config(target)

  • 说明

    使用此方法获取群设置

  • 参数

    • target: int: 指定群的群号
  • 返回

{
    "name": "群名称",
    "announcement": "群公告",
    "confessTalk": true,
    "allowMemberInvite": true,
    "autoApprove": true,
    "anonymousChat": true
}

async modify_group_config(target, config)

  • 说明

    使用此方法修改群设置(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

    • config: Dict[str, Any]: 群设置, 格式见 group_config 的返回值

async member_info(target, member_id)

  • 说明

    使用此方法获取群员资料

  • 参数

    • target: int: 指定群的群号

    • member_id: int: 群员QQ号

  • 返回

{
    "name": "群名片",
    "specialTitle": "群头衔"
}

async modify_member_info(target, member_id, info)

  • 说明

    使用此方法修改群员资料(需要有相关权限)

  • 参数

    • target: int: 指定群的群号

    • member_id: int: 群员QQ号

    • info: Dict[str, Any]: 群员资料, 格式见 member_info 的返回值

NoneBot.adapters.mirai.bot_ws 模块

class MiraiWebsocketBot

基类:nonebot.adapters.mirai.bot.MiraiBot

mirai-api-http 正向 Websocket 协议 Bot 适配。

classmethod register(driver, config, qq)

  • 说明

    注册该Adapter

  • 参数

    • driver: Driver: 程序所使用的``Driver``

    • config: Config: 程序配置对象

    • qq: int: 要使用的Bot的QQ号 注意: 在使用正向Websocket时必须指定该值!

  • 返回

    • [type]: [description]

NoneBot.adapters.mirai.config 模块

class Config

基类:pydantic.main.BaseModel

Mirai 配置类

  • 必填

    • mirai_auth_key: mirai-api-http的auth_key

    • mirai_host: mirai-api-http的地址

    • mirai_port: mirai-api-http的端口

NoneBot.adapters.mirai.message 模块

class MessageType

基类:str, enum.Enum

消息类型枚举类

class MessageSegment

基类:nonebot.adapters.MessageSegment

CQHTTP 协议 MessageSegment 适配。具体方法参考 mirai-api-http 消息类型

as_dict()

导出可以被正常json序列化的结构体

classmethod quote(id, group_id, sender_id, target_id, origin)

  • 说明

    生成回复引用消息段

  • 参数

    • id: int: 被引用回复的原消息的message_id

    • group_id: int: 被引用回复的原消息所接收的群号当为好友消息时为0

    • sender_id: int: 被引用回复的原消息的发送者的QQ号

    • target_id: int: 被引用回复的原消息的接收者者的QQ号或群号

    • origin: MessageChain: 被引用回复的原消息的消息链对象

classmethod at(target)

  • 说明

    @某个人

  • 参数

    • target: int: 群员QQ号

classmethod at_all()

  • 说明

    @全体成员

classmethod face(face_id=None, name=None)

  • 说明

    发送QQ表情

  • 参数

    • face_id: Optional[int]: QQ表情编号可选优先高于name

    • name: Optional[str]: QQ表情拼音可选

classmethod plain(text)

  • 说明

    纯文本消息

  • 参数

    • text: str: 文字消息

classmethod image(image_id=None, url=None, path=None)

  • 说明

    图片消息

  • 参数

    • image_id: Optional[str]: 图片的image_id群图片与好友图片格式不同。不为空时将忽略url属性

    • url: Optional[str]: 图片的URL发送时可作网络图片的链接

    • path: Optional[str]: 图片的路径,发送本地图片

  • 返回

    • [type]: [description]

classmethod flash_image(image_id=None, url=None, path=None)

  • 说明

    闪照消息

  • 参数

    image

classmethod voice(voice_id=None, url=None, path=None)

  • 说明

    语音消息

  • 参数

    • voice_id: Optional[str]: 语音的voice_id不为空时将忽略url属性

    • url: Optional[str]: 语音的URL发送时可作网络语音的链接

    • path: Optional[str]: 语音的路径,发送本地语音

classmethod xml(xml)

  • 说明

    XML消息

  • 参数

    • xml: str: XML文本

classmethod json(json)

  • 说明

    Json消息

  • 参数

    • json: str: Json文本

classmethod app(content)

  • 说明

    应用程序消息

  • 参数

    • content: str: 内容

classmethod poke(name)

  • 说明

    戳一戳消息

  • 参数

    • name: str: 戳一戳的类型
    • "Poke": 戳一戳
    • "ShowLove": 比心
    • "Like": 点赞
    • "Heartbroken": 心碎
    • "SixSixSix": 666
    • "FangDaZhao": 放大招

class MessageChain

基类:nonebot.adapters.Message

Mirai 协议 Messaqge 适配

由于Mirai协议的Message实现较为特殊, 故使用MessageChain命名

export()

导出为可以被正常json序列化的数组

NoneBot.adapters.mirai.event 模块

:::warning 警告 事件中为了使代码更加整洁, 我们采用了与PEP8相符的命名规则取代Mirai原有的驼峰命名

部分字段可能与文档在符号上不一致 :::

NoneBot.adapters.mirai.event.base 模块

class UserPermission

基类:str, enum.Enum

用户权限枚举类

  • OWNER: 群主
  • ADMINISTRATOR: 群管理
  • MEMBER: 普通群成员

class Event

基类:nonebot.adapters.Event

mirai-api-http 协议事件,字段与 mirai-api-http 一致。各事件字段参考 mirai-api-http 事件类型

classmethod new(data)

此事件类的工厂函数, 能够通过事件数据选择合适的子类进行序列化

normalize_dict(**kwargs)

返回可以被json正常反序列化的结构体

NoneBot.adapters.mirai.event.meta 模块

class MetaEvent

基类:nonebot.adapters.mirai.event.base.Event

元事件基类

class BotOnlineEvent

基类:nonebot.adapters.mirai.event.meta.MetaEvent

Bot登录成功

class BotOfflineEventActive

基类:nonebot.adapters.mirai.event.meta.MetaEvent

Bot主动离线

class BotOfflineEventForce

基类:nonebot.adapters.mirai.event.meta.MetaEvent

Bot被挤下线

class BotOfflineEventDropped

基类:nonebot.adapters.mirai.event.meta.MetaEvent

Bot被服务器断开或因网络问题而掉线

class BotReloginEvent

基类:nonebot.adapters.mirai.event.meta.MetaEvent

Bot主动重新登录

NoneBot.adapters.mirai.event.message 模块

class MessageEvent

基类:nonebot.adapters.mirai.event.base.Event

消息事件基类

class GroupMessage

基类:nonebot.adapters.mirai.event.message.MessageEvent

群消息事件

class FriendMessage

基类:nonebot.adapters.mirai.event.message.MessageEvent

好友消息事件

class TempMessage

基类:nonebot.adapters.mirai.event.message.MessageEvent

临时会话消息事件

NoneBot.adapters.mirai.event.notice 模块

class NoticeEvent

基类:nonebot.adapters.mirai.event.base.Event

通知事件基类

class MuteEvent

基类:nonebot.adapters.mirai.event.notice.NoticeEvent

禁言类事件基类

class BotMuteEvent

基类:nonebot.adapters.mirai.event.notice.MuteEvent

Bot被禁言

class BotUnmuteEvent

基类:nonebot.adapters.mirai.event.notice.MuteEvent

Bot被取消禁言

class MemberMuteEvent

基类:nonebot.adapters.mirai.event.notice.MuteEvent

群成员被禁言事件该成员不是Bot

class MemberUnmuteEvent

基类:nonebot.adapters.mirai.event.notice.MuteEvent

群成员被取消禁言事件该成员不是Bot

class BotJoinGroupEvent

基类:nonebot.adapters.mirai.event.notice.NoticeEvent

Bot加入了一个新群

class BotLeaveEventActive

基类:nonebot.adapters.mirai.event.notice.BotJoinGroupEvent

Bot主动退出一个群

class BotLeaveEventKick

基类:nonebot.adapters.mirai.event.notice.BotJoinGroupEvent

Bot被踢出一个群

class MemberJoinEvent

基类:nonebot.adapters.mirai.event.notice.NoticeEvent

新人入群的事件

class MemberLeaveEventKick

基类:nonebot.adapters.mirai.event.notice.MemberJoinEvent

成员被踢出群该成员不是Bot

class MemberLeaveEventQuit

基类:nonebot.adapters.mirai.event.notice.MemberJoinEvent

成员主动离群该成员不是Bot

class FriendRecallEvent

基类:nonebot.adapters.mirai.event.notice.NoticeEvent

好友消息撤回

class GroupRecallEvent

基类:nonebot.adapters.mirai.event.notice.FriendRecallEvent

群消息撤回

class GroupStateChangeEvent

基类:nonebot.adapters.mirai.event.notice.NoticeEvent

群变化事件基类

class GroupNameChangeEvent

基类:nonebot.adapters.mirai.event.notice.GroupStateChangeEvent

某个群名改变

class GroupEntranceAnnouncementChangeEvent

基类:nonebot.adapters.mirai.event.notice.GroupStateChangeEvent

某群入群公告改变

class GroupMuteAllEvent

基类:nonebot.adapters.mirai.event.notice.GroupStateChangeEvent

全员禁言

class GroupAllowAnonymousChatEvent

基类:nonebot.adapters.mirai.event.notice.GroupStateChangeEvent

匿名聊天

class GroupAllowConfessTalkEvent

基类:nonebot.adapters.mirai.event.notice.GroupStateChangeEvent

坦白说

class GroupAllowMemberInviteEvent

基类:nonebot.adapters.mirai.event.notice.GroupStateChangeEvent

允许群员邀请好友加群

class MemberStateChangeEvent

基类:nonebot.adapters.mirai.event.notice.NoticeEvent

群成员变化事件基类

class MemberCardChangeEvent

基类:nonebot.adapters.mirai.event.notice.MemberStateChangeEvent

群名片改动

class MemberSpecialTitleChangeEvent

基类:nonebot.adapters.mirai.event.notice.MemberStateChangeEvent

群头衔改动(只有群主有操作限权)

class BotGroupPermissionChangeEvent

基类:nonebot.adapters.mirai.event.notice.MemberStateChangeEvent

Bot在群里的权限被改变

class MemberPermissionChangeEvent

基类:nonebot.adapters.mirai.event.notice.MemberStateChangeEvent

成员权限改变的事件该成员不是Bot

NoneBot.adapters.mirai.event.request 模块

class RequestEvent

基类:nonebot.adapters.mirai.event.base.Event

请求事件基类

class NewFriendRequestEvent

基类:nonebot.adapters.mirai.event.request.RequestEvent

添加好友申请

async approve(bot)

  • 说明

    通过此人的好友申请

  • 参数

    • bot: Bot: 当前的 Bot 对象

async reject(bot, operate=1, message='')

  • 说明

    拒绝此人的好友申请

  • 参数

    • bot: Bot: 当前的 Bot 对象

    • operate: Literal[1, 2]: 响应的操作类型

    • 1: 拒绝添加好友
    • 2: 拒绝添加好友并添加黑名单,不再接收该用户的好友申请
    • message: str: 回复的信息

class MemberJoinRequestEvent

基类:nonebot.adapters.mirai.event.request.RequestEvent

用户入群申请Bot需要有管理员权限

async approve(bot)

  • 说明

    通过此人的加群申请

  • 参数

    • bot: Bot: 当前的 Bot 对象

async reject(bot, operate=1, message='')

  • 说明

    拒绝(忽略)此人的加群申请

  • 参数

    • bot: Bot: 当前的 Bot 对象

    • operate: Literal[1, 2, 3, 4]: 响应的操作类型

    • 1: 拒绝入群
    • 2: 忽略请求
    • 3: 拒绝入群并添加黑名单,不再接收该用户的入群申请
    • 4: 忽略入群并添加黑名单,不再接收该用户的入群申请
    • message: str: 回复的信息

class BotInvitedJoinGroupRequestEvent

基类:nonebot.adapters.mirai.event.request.RequestEvent

Bot被邀请入群申请

async approve(bot)

  • 说明

    通过这份被邀请入群申请

  • 参数

    • bot: Bot: 当前的 Bot 对象

async reject(bot, message='')

  • 说明

    拒绝这份被邀请入群申请

  • 参数

    • bot: Bot: 当前的 Bot 对象

    • message: str: 邀请消息