# NoneBot.adapters.mirai 模块
# Mirai-API-HTTP 协议适配
协议详情请看: mirai-api-http 文档 (opens new window)
# NoneBot.adapters.mirai.config 模块
# class Config
Mirai 配置类
必填
auth_key
/mirai_auth_key
: mirai-api-http 的 auth_keymirai_host
: mirai-api-http 的地址mirai_port
: 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)
# async upload(path, *, params)
说明
以表单(
multipart/form-data
)形式主动提交API请求参数
path: str
: 对应API路径params: Dict[str, Any]
: 请求参数 (无需sessionKey)
# class Bot
mirai-api-http 协议 Bot 适配。
WARNING
API中为了使代码更加整洁, 我们采用了与PEP8相符的命名规则取代Mirai原有的驼峰命名
部分字段可能与文档在符号上不一致
# property api
返回该Bot对象的会话管理实例以提供API主动调用
# async call_api(api, **data)
WARNING
由于Mirai的HTTP API特殊性, 该API暂时无法实现
TIP
你可以使用 MiraiBot.api
中提供的调用方法来代替
# send(event, message, at_sender=False)
说明
根据
event
向触发事件的主体发送信息参数
event: Event
: Event对象message: Union[MessageChain, MessageSegment, str]
: 要发送的消息at_sender: bool
: 是否 @ 事件主体
# send_friend_message(target, message_chain)
说明
使用此方法向指定好友发送消息
参数
target: int
: 发送消息目标好友的 QQ 号message_chain: MessageChain
: 消息链,是一个消息对象构成的数组
# send_temp_message(qq, group, message_chain)
说明
使用此方法向临时会话对象发送消息
参数
qq: int
: 临时会话对象 QQ 号group: int
: 临时会话群号message_chain: MessageChain
: 消息链,是一个消息对象构成的数组
# send_group_message(group, message_chain, quote=None)
说明
使用此方法向指定群发送消息
参数
group: int
: 发送消息目标群的群号message_chain: MessageChain
: 消息链,是一个消息对象构成的数组quote: Optional[int]
: 引用一条消息的 message_id 进行回复
# recall(target)
说明
使用此方法撤回指定消息。对于bot发送的消息,有2分钟时间限制。对于撤回群聊中群员的消息,需要有相应权限
参数
target: int
: 需要撤回的消息的message_id
# 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的数组
# upload_image(type, img)
说明
使用此方法上传图片文件至服务器并返回Image_id
参数
type: str
: “friend” 或 “group” 或 “temp”img: BytesIO
: 图片的BytesIO对象
# upload_voice(type, voice)
说明
使用此方法上传语音文件至服务器并返回voice_id
参数
type: str
: 当前仅支持 “group”voice: BytesIO
: 语音的BytesIO对象
# fetch_message(count=10)
说明
使用此方法获取bot接收到的最老消息和最老各类事件 (会从MiraiApiHttp消息记录中删除)
参数
count: int
: 获取消息和事件的数量
# fetch_latest_message(count=10)
说明
使用此方法获取bot接收到的最新消息和最新各类事件 (会从MiraiApiHttp消息记录中删除)
参数
count: int
: 获取消息和事件的数量
# peek_message(count=10)
说明
使用此方法获取bot接收到的最老消息和最老各类事件 (不会从MiraiApiHttp消息记录中删除)
参数
count: int
: 获取消息和事件的数量
# peek_latest_message(count=10)
说明
使用此方法获取bot接收到的最新消息和最新各类事件 (不会从MiraiApiHttp消息记录中删除)
参数
count: int
: 获取消息和事件的数量
# messsage_from_id(id)
说明
通过messageId获取一条被缓存的消息 使用此方法获取bot接收到的消息和各类事件
参数
id: int
: 获取消息的message_id
# count_message()
说明
使用此方法获取bot接收并缓存的消息总数,注意不包含被删除的
# friend_list()
说明
使用此方法获取bot的好友列表
返回
List[Dict[str, Any]]
: 返回的好友列表数据
# group_list()
说明
使用此方法获取bot的群列表
返回
List[Dict[str, Any]]
: 返回的群列表数据
# member_list(target)
说明
使用此方法获取bot指定群种的成员列表
参数
target: int
: 指定群的群号
返回
List[Dict[str, Any]]
: 返回的群成员列表数据
# mute(target, member_id, time)
说明
使用此方法指定群禁言指定群员(需要有相关权限)
参数
target: int
: 指定群的群号member_id: int
: 指定群员QQ号time: int
: 禁言时长,单位为秒,最多30天
# unmute(target, member_id)
说明
使用此方法指定群解除群成员禁言(需要有相关权限)
参数
target: int
: 指定群的群号member_id: int
: 指定群员QQ号
# kick(target, member_id, msg)
说明
使用此方法移除指定群成员(需要有相关权限)
参数
target: int
: 指定群的群号member_id: int
: 指定群员QQ号msg: str
: 信息
# quit(target)
说明
使用此方法使Bot退出群聊
参数
target: int
: 退出的群号
# mute_all(target)
说明
使用此方法令指定群进行全体禁言(需要有相关权限)
参数
target: int
: 指定群的群号
# unmute_all(target)
说明
使用此方法令指定群解除全体禁言(需要有相关权限)
参数
target: int
: 指定群的群号
# group_config(target)
说明
使用此方法获取群设置
参数
target: int
: 指定群的群号
返回
{
"name": "群名称",
"announcement": "群公告",
"confessTalk": true,
"allowMemberInvite": true,
"autoApprove": true,
"anonymousChat": true
}
2
3
4
5
6
7
8
# modify_group_config(target, config)
说明
使用此方法修改群设置(需要有相关权限)
参数
target: int
: 指定群的群号config: Dict[str, Any]
: 群设置, 格式见group_config
的返回值
# member_info(target, member_id)
说明
使用此方法获取群员资料
参数
target: int
: 指定群的群号member_id: int
: 群员QQ号
返回
{
"name": "群名片",
"specialTitle": "群头衔"
}
2
3
4
# modify_member_info(target, member_id, info)
说明
使用此方法修改群员资料(需要有相关权限)
参数
target: int
: 指定群的群号member_id: int
: 群员QQ号info: Dict[str, Any]
: 群员资料, 格式见member_info
的返回值
# NoneBot.adapters.mirai.message 模块
# class MessageType
基类:str
, enum.Enum
消息类型枚举类
# class MessageSegment
基类:nonebot.adapters._message.MessageSegment
[MessageChain
]
Mirai-API-HTTP 协议 MessageSegment 适配。具体方法参考 mirai-api-http 消息类型 (opens new window)
# as_dict()
导出可以被正常json序列化的结构体
# classmethod quote(id, group_id, sender_id, target_id, origin)
说明
生成回复引用消息段
参数
id: int
: 被引用回复的原消息的message_idgroup_id: int
: 被引用回复的原消息所接收的群号,当为好友消息时为0sender_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表情编号,可选,优先高于namename: 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]
: 图片的路径,发送本地图片
# 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
: 666FangDaZhao
: 放大招
# class MessageChain
基类:nonebot.adapters._message.Message
[nonebot.adapters.mirai.message.MessageSegment
]
Mirai 协议 Message 适配
由于Mirai协议的Message实现较为特殊, 故使用MessageChain命名
# export()
导出为可以被正常json序列化的数组
# extract_first(*type)
说明
弹出该消息链的第一个消息
参数
- *type: MessageType: 指定的消息类型, 当指定后如类型不匹配不弹出
# NoneBot.adapters.mirai.utils 模块
# exception ActionFailed
基类:nonebot.exception.ActionFailed
说明
API 请求成功返回数据,但 API 操作失败。
# exception InvalidArgument
基类:nonebot.exception.AdapterException
说明
调用API的参数出错
# catch_network_error(function)
说明
捕捉函数抛出的httpx网络异常并释放
NetworkError
异常处理返回数据, 在code不为0时释放
ActionFailed
异常
WARNING
此装饰器只支持使用了httpx的异步函数
# argument_validation(function)
说明
通过函数签名中的类型注解来对传入参数进行运行时校验
会在参数出错时释放
InvalidArgument
异常
# NoneBot.adapters.mirai.event 模块
WARNING
事件中为了使代码更加整洁, 我们采用了与PEP8相符的命名规则取代Mirai原有的驼峰命名
部分字段可能与文档在符号上不一致
# class Event
基类:nonebot.adapters._event.Event
mirai-api-http 协议事件,字段与 mirai-api-http 一致。各事件字段参考 mirai-api-http 事件类型 (opens new window)
# classmethod new(data)
此事件类的工厂函数, 能够通过事件数据选择合适的子类进行序列化
# normalize_dict(**kwargs)
返回可以被json正常反序列化的结构体
# class UserPermission
基类:str
, enum.Enum
说明
用户权限枚举类
OWNER
: 群主ADMINISTRATOR
: 群管理MEMBER
: 普通群成员
# 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
临时会话消息事件
# 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)
# 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
: 邀请消息
# NoneBot.adapters.mirai.event.base 模块
# class UserPermission
基类:str
, enum.Enum
说明
用户权限枚举类
OWNER
: 群主ADMINISTRATOR
: 群管理MEMBER
: 普通群成员
# class NudgeSubjectKind
基类:str
, enum.Enum
说明
戳一戳类型枚举类
Group
: 群Friend
: 好友
# class Event
基类:nonebot.adapters._event.Event
mirai-api-http 协议事件,字段与 mirai-api-http 一致。各事件字段参考 mirai-api-http 事件类型 (opens new window)
# 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)
# class NudgeEvent
基类:nonebot.adapters.mirai.event.notice.NoticeEvent
戳一戳触发事件
# 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
: 邀请消息