Module graia.application.event.mirai

Expand source code
from typing import Any, Dict, Literal, NoReturn, Optional

from pydantic import Field
from pydantic.class_validators import validator
from graia.application.context import application
from graia.application.group import Group, Member, MemberPerm
from graia.application.exceptions import InvaildArgument, InvaildSession
from graia.application.utilles import raise_for_return_code
from . import ApplicationDispatcher, MiraiEvent, EmptyDispatcher
from graia.broadcast.entities.dispatcher import BaseDispatcher
from graia.broadcast.interfaces.dispatcher import DispatcherInterface
from datetime import datetime


class BotOnlineEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号登录成功

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOnlineEvent"
    qq: int

    Dispatcher = EmptyDispatcher


class BotOfflineEventActive(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号主动离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOfflineEventActive"
    qq: int

    Dispatcher = EmptyDispatcher


class BotOfflineEventForce(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号被迫离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOfflineEventForce"
    qq: int

    Dispatcher = EmptyDispatcher


class BotOfflineEventDropped(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号与服务器的连接被服务器主动断开, 或因网络原因离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOfflineEventDropped"
    qq: int

    Dispatcher = EmptyDispatcher


class BotReloginEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号正尝试重新登录

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotReloginEvent"
    qq: int

    Dispatcher = EmptyDispatcher


class BotGroupPermissionChangeEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号在一特定群组内所具有的权限发生变化

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotGroupPermissionChangeEvent"
    origin: MemberPerm
    current: MemberPerm
    group: Group

    Dispatcher = EmptyDispatcher


class BotMuteEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    """

    type = "BotMuteEvent"
    durationSeconds: int
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group


class BotUnmuteEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主解除禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行解除禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    """

    type = "BotUnmuteEvent"
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group


class BotJoinGroupEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号加入指定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    """

    type = "BotJoinGroupEvent"
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class BotLeaveEventActive(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号主动退出了某群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    """

    type: str = "BotLeaveEventActive"
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class BotLeaveEventKick(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号被某群组的管理员/群主从该群组中删除.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    """

    type: str = "BotLeaveEventKick"
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class GroupRecallEvent(MiraiEvent):
    """当该事件发生时, 有群成员在指定群组撤回了一条消息, 注意, 这里的群成员若具有管理员/群主权限, 则他们可以撤回其他普通群员的消息, 且不受发出时间限制.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, return:optional): 执行本操作的群成员, 若为 None 则为应用实例所辖账号操作
        Group (annotation): 发生该事件的群组
    """

    type = "GroupRecallEvent"
    authorId: int
    messageId: int
    time: datetime
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class FriendRecallEvent(MiraiEvent):
    """当该事件发生时, 有一位与应用实例所辖账号为好友关系的用户撤回了一条消息

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "FriendRecallEvent"
    authorId: int
    messageId: int
    time: int
    operator: int

    Dispatcher = EmptyDispatcher


class GroupNameChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组被修改了群名称

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了群名称的群组
        Member (annotation): 更改群名称的成员, 权限必定为管理员或是群主
    """

    type = "GroupNameChangeEvent"
    origin: str
    current: str
    group: Group
    operator: Optional[Member] = None

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupEntranceAnnouncementChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组被修改了入群公告

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了入群公告的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupEntranceAnnouncementChangeEvent"
    origin: str
    current: str
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupMuteAllEvent(MiraiEvent):
    """该事件发生时, 有一群组开启了全体禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 开启了全体禁言的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupMuteAllEvent"
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupAllowAnonymousChatEvent(MiraiEvent):
    """该事件发生时, 有一群组修改了有关匿名聊天的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupAllowAnonymousChatEvent"
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class GroupAllowConfessTalkEvent(MiraiEvent):
    """该事件发生时, 有一群组修改了有关坦白说的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
    """

    type = "GroupAllowAnonymousChatEvent"
    origin: bool
    current: bool
    group: Group
    isByBot: bool

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group


class GroupAllowMemberInviteEvent(MiraiEvent):
    """该事件发生时, 有一群组修改了有关是否允许已有成员邀请其他用户加入群组的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupAllowMemberInviteEvent"
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator


class MemberJoinEvent(MiraiEvent):
    """该事件发生时, 有一新成员加入了一特定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 该用户加入的群组
        Member (annotation): 关于该用户的成员实例
    """

    type = "MemberJoinEvent"
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberLeaveEventKick(MiraiEvent):
    """该事件发生时, 有一群组成员被管理员/群主从群组中删除, 当 `operator` 为 `None` 时, 执行者为应用实例所辖账号.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 指定的群组
        Member (annotation):
          - `"target"` (default, const, str): 被从群组删除的成员
          - `"operator"` (default, const, str, return:optional): 执行了该操作的管理员/群主, 也可能是应用实例所辖账号.
    """

    type = "MemberLeaveEventKick"
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberLeaveEventQuit(MiraiEvent):
    """该事件发生时, 有一群组成员主动退出群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生本事件的群组, 通常的, 在本事件发生后本群组成员数量少于之前
        Member (annotation): 主动退出群组的成员
    """

    type = "MemberLeaveEventQuit"
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberCardChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组成员的群名片被更改, 执行者可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `"target"` (default, const, str): 被更改群名片的成员
          - `"operator"` (default, const, str, return:optional): 该操作的执行者, 可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).
    """

    type = "MemberCardChangeEvent"
    origin: str
    current: str
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator


class MemberSpecialTitleChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组成员的群头衔被更改, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被更改群头衔的群组成员
    """

    type = "MemberSpecialTitleChangeEvent"
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberPermissionChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组成员的权限被更改/调整, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被调整权限的群组成员
    """

    type = "MemberPermissionChangeEvent"
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberMuteEvent(MiraiEvent):
    """该事件发生时, 有一群组成员被管理员/群组禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `"target"` (default, const, str): 被禁言的成员
          - `"operator"` (default, const, str, return:optional): 该操作的执行者, 也可能是应用实例所辖账号.
    """

    type = "MemberMuteEvent"
    durationSeconds: int
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group


class MemberUnmuteEvent(MiraiEvent):
    """该事件发生时, 有一群组成员被管理员/群组解除禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `"target"` (default, const, str): 被禁言的成员
          - `"operator"` (default, const, str, return:optional): 该操作的执行者, 可能是管理员或是群主, 也可能是应用实例所辖账号.
    """

    type = "MemberUnmuteEvent"
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group


class NewFriendRequestEvent(MiraiEvent):
    """当该事件发生时, 有一用户向机器人提起好友请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 发起加好友请求的用户的 ID
        event.sourceGroup: Optional[int] # 对方可能是从某个群发起对账号的请求的, mirai 可以解析对方从哪个群发起的请求.
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
    """

    type = "NewFriendRequestEvent"
    requestId: int = Field(..., alias="eventId")
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    sourceGroup: Optional[int] = Field(..., alias="groupId")
    nickname: str = Field(..., alias="nick")
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = "") -> NoReturn:
        """同意对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/newFriendRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.sourceGroup,
                "operate": 0,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = "") -> NoReturn:
        """拒绝对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/newFriendRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.sourceGroup,
                "operate": 1,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = "") -> NoReturn:
        """拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/newFriendRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.sourceGroup,
                "operate": 2,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)


class MemberJoinRequestEvent(MiraiEvent):
    """当该事件发生时, 有一用户向机器人作为管理员/群主的群组申请加入群组.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 申请加入群组的用户的 ID
        event.groupId: Optional[int] # 对方试图加入的群组的 ID
        event.groupName: str # 对方试图加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 忽略请求: `await event.ignore()`, 具体查看该方法所附带的说明.
        5. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
        6. 忽略并不再接受来自对方的请求: `await event.ignoreAndBlock()`, 具体查看该方法所附带的说明.
    """

    type = "MemberJoinRequestEvent"
    requestId: int = Field(..., alias="eventId")
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias="groupId")
    groupName: str = Field(..., alias="groupName")
    nickname: str = Field(..., alias="nick")
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = "") -> NoReturn:
        """同意对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 0,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = "") -> NoReturn:
        """拒绝对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 1,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignore(self, message: str = "") -> NoReturn:
        """忽略对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 2,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = "") -> NoReturn:
        """拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 3,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignoreAndBlock(self, message: str = "") -> NoReturn:
        """忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 4,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)


class BotInvitedJoinGroupRequestEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号接受到来自某个账号的邀请加入某个群组的请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 邀请所辖账号加入群组的用户的 ID
        event.groupId: Optional[int] # 对方邀请所辖账号加入的群组的 ID
        event.groupName: str # 对方邀请所辖账号加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
    """

    type = "BotInvitedJoinGroupRequestEvent"
    requestId: int = Field(..., alias="eventId")
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias="groupId")
    groupName: str = Field(..., alias="groupName")
    nickname: str = Field(..., alias="nick")
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = "") -> NoReturn:
        """接受邀请并加入群组/发起对指定群组的加入申请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/botInvitedJoinGroupRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 0,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = "") -> NoReturn:
        """拒绝对方加入指定群组的邀请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/botInvitedJoinGroupRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 1,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)


class NudgeEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号被某个账号在相应上下文区域进行 "戳一戳"(Nudge) 的行为.

    Graia Project 及 NatriumLab 都不是医学机构, 不负责关于性骚扰等方面的咨询, 请前往权威医学有关设施进行相应操作.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type: str = "NudgeEvent"
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    target: int

    msg_action: str = Field(..., alias="action")
    msg_suffix: str = Field(..., alias="suffix")
    origin_subject_info: Dict[str, Any] = Field(..., alias="subject")

    friend_id: Optional[int] = None
    group_id: Optional[int] = None

    context_type: Literal["friend", "group"] = None

    @validator("friend_id", pre=True, always=True)
    def subject_handle_friend_id(cls, v, values, **kwargs):
        if values["origin_subject_info"]["kind"] == "Friend":
            return values["origin_subject_info"]["id"]

    @validator("group_id", pre=True, always=True)
    def subject_handle_group_id(cls, v, values):
        if values["origin_subject_info"]["kind"] == "Group":
            return values["origin_subject_info"]["id"]

    @validator("context_type", pre=True, always=True)
    def subject_handle_context_type(cls, v, values):
        return str.lower(values["origin_subject_info"]["kind"])

    Dispatcher = EmptyDispatcher

Classes

class BotGroupPermissionChangeEvent (**data: Any)

当该事件发生时, 应用实例所辖账号在一特定群组内所具有的权限发生变化

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotGroupPermissionChangeEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号在一特定群组内所具有的权限发生变化

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotGroupPermissionChangeEvent"
    origin: MemberPerm
    current: MemberPerm
    group: Group

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var currentMemberPerm
var groupGroup
var originMemberPerm
var type : str
class BotInvitedJoinGroupRequestEvent (**data: Any)

当该事件发生时, 应用实例所辖账号接受到来自某个账号的邀请加入某个群组的请求.

注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作.

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Addon Introduction: 该事件的处理需要你获取原始事件实例. 1. 读取该事件的基础信息: python event.supplicant: int # 邀请所辖账号加入群组的用户的 ID event.groupId: Optional[int] # 对方邀请所辖账号加入的群组的 ID event.groupName: str # 对方邀请所辖账号加入的群组的名称 event.nickname: str # 对方的昵称 event.message: str # 对方发起请求时填写的描述

2. 同意请求: <code>await event.accept()</code>, 具体查看该方法所附带的说明.
3. 拒绝请求: <code>await event.reject()</code>, 具体查看该方法所附带的说明.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotInvitedJoinGroupRequestEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号接受到来自某个账号的邀请加入某个群组的请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 邀请所辖账号加入群组的用户的 ID
        event.groupId: Optional[int] # 对方邀请所辖账号加入的群组的 ID
        event.groupName: str # 对方邀请所辖账号加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
    """

    type = "BotInvitedJoinGroupRequestEvent"
    requestId: int = Field(..., alias="eventId")
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias="groupId")
    groupName: str = Field(..., alias="groupName")
    nickname: str = Field(..., alias="nick")
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = "") -> NoReturn:
        """接受邀请并加入群组/发起对指定群组的加入申请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/botInvitedJoinGroupRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 0,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = "") -> NoReturn:
        """拒绝对方加入指定群组的邀请.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/botInvitedJoinGroupRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 1,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var groupId : Union[int, NoneType]
var groupName : str
var message : str
var nickname : str
var requestId : int
var supplicant : int
var type : str

Methods

async def accept(self, message: str = '') ‑> NoReturn

接受邀请并加入群组/发起对指定群组的加入申请.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def accept(self, message: str = "") -> NoReturn:
    """接受邀请并加入群组/发起对指定群组的加入申请.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/botInvitedJoinGroupRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 0,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def reject(self, message: str = '') ‑> NoReturn

拒绝对方加入指定群组的邀请.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def reject(self, message: str = "") -> NoReturn:
    """拒绝对方加入指定群组的邀请.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/botInvitedJoinGroupRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 1,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
class BotJoinGroupEvent (**data: Any)

当该事件发生时, 应用实例所辖账号加入指定群组

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation, optional = None): 发生该事件的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotJoinGroupEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号加入指定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    """

    type = "BotJoinGroupEvent"
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var groupGroup
var type : str
class BotLeaveEventActive (**data: Any)

当该事件发生时, 应用实例所辖账号主动退出了某群组.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation, optional = None): 发生该事件的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotLeaveEventActive(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号主动退出了某群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    """

    type: str = "BotLeaveEventActive"
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var groupGroup
var type : str
class BotLeaveEventKick (**data: Any)

当该事件发生时, 应用实例所辖账号被某群组的管理员/群主从该群组中删除.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation, optional = None): 发生该事件的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotLeaveEventKick(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号被某群组的管理员/群主从该群组中删除.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation, optional = None): 发生该事件的群组
    """

    type: str = "BotLeaveEventKick"
    group: Group

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var groupGroup
var type : str
class BotMuteEvent (**data: Any)

当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主禁言

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Member (annotation, optional = None): 执行禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作 Group (annotation, optional = None): 发生该事件的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotMuteEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    """

    type = "BotMuteEvent"
    durationSeconds: int
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var durationSeconds : int
var operator : Union[Member, NoneType]
var type : str
class BotOfflineEventActive (**data: Any)

当该事件发生时, 应用实例所辖账号主动离线

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotOfflineEventActive(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号主动离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOfflineEventActive"
    qq: int

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var qq : int
var type : str
class BotOfflineEventDropped (**data: Any)

当该事件发生时, 应用实例所辖账号与服务器的连接被服务器主动断开, 或因网络原因离线

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotOfflineEventDropped(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号与服务器的连接被服务器主动断开, 或因网络原因离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOfflineEventDropped"
    qq: int

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var qq : int
var type : str
class BotOfflineEventForce (**data: Any)

当该事件发生时, 应用实例所辖账号被迫离线

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotOfflineEventForce(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号被迫离线

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOfflineEventForce"
    qq: int

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var qq : int
var type : str
class BotOnlineEvent (**data: Any)

当该事件发生时, 应用实例所辖账号登录成功

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotOnlineEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号登录成功

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotOnlineEvent"
    qq: int

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var qq : int
var type : str
class BotReloginEvent (**data: Any)

当该事件发生时, 应用实例所辖账号正尝试重新登录

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotReloginEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号正尝试重新登录

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "BotReloginEvent"
    qq: int

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var qq : int
var type : str
class BotUnmuteEvent (**data: Any)

当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主解除禁言

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Member (annotation, optional = None): 执行解除禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作 Group (annotation, optional = None): 发生该事件的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class BotUnmuteEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号在一特定群组内被管理员/群主解除禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, optional = None): 执行解除禁言操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
        Group (annotation, optional = None): 发生该事件的群组
    """

    type = "BotUnmuteEvent"
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.operator
            elif interface.annotation is Group:
                if interface.event.operator:
                    return interface.event.operator.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var operator : Union[Member, NoneType]
var type : str
class FriendRecallEvent (**data: Any)

当该事件发生时, 有一位与应用实例所辖账号为好友关系的用户撤回了一条消息

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class FriendRecallEvent(MiraiEvent):
    """当该事件发生时, 有一位与应用实例所辖账号为好友关系的用户撤回了一条消息

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type = "FriendRecallEvent"
    authorId: int
    messageId: int
    time: int
    operator: int

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var authorId : int
var messageId : int
var operator : int
var time : int
var type : str
class GroupAllowAnonymousChatEvent (**data: Any)

该事件发生时, 有一群组修改了有关匿名聊天的相关设定

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 修改了相关设定的群组 Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupAllowAnonymousChatEvent(MiraiEvent):
    """该事件发生时, 有一群组修改了有关匿名聊天的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupAllowAnonymousChatEvent"
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : bool
var groupGroup
var operator : Union[Member, NoneType]
var origin : bool
var type : str
class GroupAllowConfessTalkEvent (**data: Any)

该事件发生时, 有一群组修改了有关坦白说的相关设定

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 修改了相关设定的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupAllowConfessTalkEvent(MiraiEvent):
    """该事件发生时, 有一群组修改了有关坦白说的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
    """

    type = "GroupAllowAnonymousChatEvent"
    origin: bool
    current: bool
    group: Group
    isByBot: bool

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : bool
var groupGroup
var isByBot : bool
var origin : bool
var type : str
class GroupAllowMemberInviteEvent (**data: Any)

该事件发生时, 有一群组修改了有关是否允许已有成员邀请其他用户加入群组的相关设定

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 修改了相关设定的群组 Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupAllowMemberInviteEvent(MiraiEvent):
    """该事件发生时, 有一群组修改了有关是否允许已有成员邀请其他用户加入群组的相关设定

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 修改了相关设定的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupAllowMemberInviteEvent"
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : bool
var groupGroup
var operator : Union[Member, NoneType]
var origin : bool
var type : str
class GroupEntranceAnnouncementChangeEvent (**data: Any)

该事件发生时, 有一群组被修改了入群公告

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 被修改了入群公告的群组 Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupEntranceAnnouncementChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组被修改了入群公告

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了入群公告的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupEntranceAnnouncementChangeEvent"
    origin: str
    current: str
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : str
var groupGroup
var operator : Union[Member, NoneType]
var origin : str
var type : str
class GroupMuteAllEvent (**data: Any)

该事件发生时, 有一群组开启了全体禁言

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 开启了全体禁言的群组 Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupMuteAllEvent(MiraiEvent):
    """该事件发生时, 有一群组开启了全体禁言

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 开启了全体禁言的群组
        Member (annotation, return:optional): 作出此操作的管理员/群主, 若为 None 则为应用实例所辖账号操作
    """

    type = "GroupMuteAllEvent"
    origin: bool
    current: bool
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : bool
var groupGroup
var operator : Union[Member, NoneType]
var origin : bool
var type : str
class GroupNameChangeEvent (**data: Any)

该事件发生时, 有一群组被修改了群名称

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 被修改了群名称的群组 Member (annotation): 更改群名称的成员, 权限必定为管理员或是群主

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupNameChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组被修改了群名称

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 被修改了群名称的群组
        Member (annotation): 更改群名称的成员, 权限必定为管理员或是群主
    """

    type = "GroupNameChangeEvent"
    origin: str
    current: str
    group: Group
    operator: Optional[Member] = None

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : str
var groupGroup
var operator : Union[Member, NoneType]
var origin : str
var type : str
class GroupRecallEvent (**data: Any)

当该事件发生时, 有群成员在指定群组撤回了一条消息, 注意, 这里的群成员若具有管理员/群主权限, 则他们可以撤回其他普通群员的消息, 且不受发出时间限制.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Member (annotation, return:optional): 执行本操作的群成员, 若为 None 则为应用实例所辖账号操作 Group (annotation): 发生该事件的群组

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class GroupRecallEvent(MiraiEvent):
    """当该事件发生时, 有群成员在指定群组撤回了一条消息, 注意, 这里的群成员若具有管理员/群主权限, 则他们可以撤回其他普通群员的消息, 且不受发出时间限制.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Member (annotation, return:optional): 执行本操作的群成员, 若为 None 则为应用实例所辖账号操作
        Group (annotation): 发生该事件的群组
    """

    type = "GroupRecallEvent"
    authorId: int
    messageId: int
    time: datetime
    group: Group
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Group:
                return interface.event.group
            elif interface.annotation is Member:
                return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var authorId : int
var groupGroup
var messageId : int
var operator : Union[Member, NoneType]
var time : datetime.datetime
var type : str
class MemberCardChangeEvent (**data: Any)

该事件发生时, 有一群组成员的群名片被更改, 执行者可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, operatorNone).

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 发生该事件的群组 Member (annotation): - "target" (default, const, str): 被更改群名片的成员 - "operator" (default, const, str, return:optional): 该操作的执行者, 可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, operatorNone).

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberCardChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组成员的群名片被更改, 执行者可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `"target"` (default, const, str): 被更改群名片的成员
          - `"operator"` (default, const, str, return:optional): 该操作的执行者, 可能是管理员/群主, 该成员自己, 也可能是应用实例所辖账号(这时, `operator` 为 `None`).
    """

    type = "MemberCardChangeEvent"
    origin: str
    current: str
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : str
var memberMember
var operator : Union[Member, NoneType]
var origin : str
var type : str
class MemberJoinEvent (**data: Any)

该事件发生时, 有一新成员加入了一特定群组

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 该用户加入的群组 Member (annotation): 关于该用户的成员实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberJoinEvent(MiraiEvent):
    """该事件发生时, 有一新成员加入了一特定群组

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 该用户加入的群组
        Member (annotation): 关于该用户的成员实例
    """

    type = "MemberJoinEvent"
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var memberMember
var type : str
class MemberJoinRequestEvent (**data: Any)

当该事件发生时, 有一用户向机器人作为管理员/群主的群组申请加入群组.

注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作.

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Addon Introduction: 该事件的处理需要你获取原始事件实例. 1. 读取该事件的基础信息: python event.supplicant: int # 申请加入群组的用户的 ID event.groupId: Optional[int] # 对方试图加入的群组的 ID event.groupName: str # 对方试图加入的群组的名称 event.nickname: str # 对方的昵称 event.message: str # 对方发起请求时填写的描述

2. 同意请求: <code>await event.accept()</code>, 具体查看该方法所附带的说明.
3. 拒绝请求: <code>await event.reject()</code>, 具体查看该方法所附带的说明.
4. 忽略请求: <code>await event.ignore()</code>, 具体查看该方法所附带的说明.
5. 拒绝并不再接受来自对方的请求: <code>await event.rejectAndBlock()</code>, 具体查看该方法所附带的说明.
6. 忽略并不再接受来自对方的请求: <code>await event.ignoreAndBlock()</code>, 具体查看该方法所附带的说明.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberJoinRequestEvent(MiraiEvent):
    """当该事件发生时, 有一用户向机器人作为管理员/群主的群组申请加入群组.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 申请加入群组的用户的 ID
        event.groupId: Optional[int] # 对方试图加入的群组的 ID
        event.groupName: str # 对方试图加入的群组的名称
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 忽略请求: `await event.ignore()`, 具体查看该方法所附带的说明.
        5. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
        6. 忽略并不再接受来自对方的请求: `await event.ignoreAndBlock()`, 具体查看该方法所附带的说明.
    """

    type = "MemberJoinRequestEvent"
    requestId: int = Field(..., alias="eventId")
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    groupId: Optional[int] = Field(..., alias="groupId")
    groupName: str = Field(..., alias="groupName")
    nickname: str = Field(..., alias="nick")
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = "") -> NoReturn:
        """同意对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 0,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = "") -> NoReturn:
        """拒绝对方加入群组.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 1,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignore(self, message: str = "") -> NoReturn:
        """忽略对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 2,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = "") -> NoReturn:
        """拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 3,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def ignoreAndBlock(self, message: str = "") -> NoReturn:
        """忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/memberJoinRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.groupId,
                "operate": 4,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var groupId : Union[int, NoneType]
var groupName : str
var message : str
var nickname : str
var requestId : int
var supplicant : int
var type : str

Methods

async def accept(self, message: str = '') ‑> NoReturn

同意对方加入群组.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def accept(self, message: str = "") -> NoReturn:
    """同意对方加入群组.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/memberJoinRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 0,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def ignore(self, message: str = '') ‑> NoReturn

忽略对方加入群组的请求.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def ignore(self, message: str = "") -> NoReturn:
    """忽略对方加入群组的请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/memberJoinRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 2,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def ignoreAndBlock(self, message: str = '') ‑> NoReturn

忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def ignoreAndBlock(self, message: str = "") -> NoReturn:
    """忽略对方加入群组的请求, 并不再接受来自对方加入群组的请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/memberJoinRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 4,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def reject(self, message: str = '') ‑> NoReturn

拒绝对方加入群组.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def reject(self, message: str = "") -> NoReturn:
    """拒绝对方加入群组.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/memberJoinRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 1,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def rejectAndBlock(self, message: str = '') ‑> NoReturn

拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def rejectAndBlock(self, message: str = "") -> NoReturn:
    """拒绝对方加入群组的请求, 并不再接受来自对方加入群组的请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/memberJoinRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.groupId,
            "operate": 3,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
class MemberLeaveEventKick (**data: Any)

该事件发生时, 有一群组成员被管理员/群主从群组中删除, 当 operatorNone 时, 执行者为应用实例所辖账号.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 指定的群组 Member (annotation): - "target" (default, const, str): 被从群组删除的成员 - "operator" (default, const, str, return:optional): 执行了该操作的管理员/群主, 也可能是应用实例所辖账号.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberLeaveEventKick(MiraiEvent):
    """该事件发生时, 有一群组成员被管理员/群主从群组中删除, 当 `operator` 为 `None` 时, 执行者为应用实例所辖账号.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 指定的群组
        Member (annotation):
          - `"target"` (default, const, str): 被从群组删除的成员
          - `"operator"` (default, const, str, return:optional): 执行了该操作的管理员/群主, 也可能是应用实例所辖账号.
    """

    type = "MemberLeaveEventKick"
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var memberMember
var operator : Union[Member, NoneType]
var type : str
class MemberLeaveEventQuit (**data: Any)

该事件发生时, 有一群组成员主动退出群组.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 发生本事件的群组, 通常的, 在本事件发生后本群组成员数量少于之前 Member (annotation): 主动退出群组的成员

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberLeaveEventQuit(MiraiEvent):
    """该事件发生时, 有一群组成员主动退出群组.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生本事件的群组, 通常的, 在本事件发生后本群组成员数量少于之前
        Member (annotation): 主动退出群组的成员
    """

    type = "MemberLeaveEventQuit"
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var memberMember
var type : str
class MemberMuteEvent (**data: Any)

该事件发生时, 有一群组成员被管理员/群组禁言, 当 operatorNone 时为应用实例所辖账号操作.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 发生该事件的群组 Member (annotation): - "target" (default, const, str): 被禁言的成员 - "operator" (default, const, str, return:optional): 该操作的执行者, 也可能是应用实例所辖账号.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberMuteEvent(MiraiEvent):
    """该事件发生时, 有一群组成员被管理员/群组禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `"target"` (default, const, str): 被禁言的成员
          - `"operator"` (default, const, str, return:optional): 该操作的执行者, 也可能是应用实例所辖账号.
    """

    type = "MemberMuteEvent"
    durationSeconds: int
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var durationSeconds : int
var memberMember
var operator : Union[Member, NoneType]
var type : str
class MemberPermissionChangeEvent (**data: Any)

该事件发生时, 有一群组成员的权限被更改/调整, 执行者只可能是群组的群主.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 发生该事件的群组 Member (annotation): 被调整权限的群组成员

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberPermissionChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组成员的权限被更改/调整, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被调整权限的群组成员
    """

    type = "MemberPermissionChangeEvent"
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : str
var memberMember
var origin : str
var type : str
class MemberSpecialTitleChangeEvent (**data: Any)

该事件发生时, 有一群组成员的群头衔被更改, 执行者只可能是群组的群主.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 发生该事件的群组 Member (annotation): 被更改群头衔的群组成员

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberSpecialTitleChangeEvent(MiraiEvent):
    """该事件发生时, 有一群组成员的群头衔被更改, 执行者只可能是群组的群主.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation): 被更改群头衔的群组成员
    """

    type = "MemberSpecialTitleChangeEvent"
    origin: str
    current: str
    member: Member

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                return interface.event.member
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var current : str
var memberMember
var origin : str
var type : str
class MemberUnmuteEvent (**data: Any)

该事件发生时, 有一群组成员被管理员/群组解除禁言, 当 operatorNone 时为应用实例所辖账号操作.

注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息!

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例 Group (annotation): 发生该事件的群组 Member (annotation): - "target" (default, const, str): 被禁言的成员 - "operator" (default, const, str, return:optional): 该操作的执行者, 可能是管理员或是群主, 也可能是应用实例所辖账号.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class MemberUnmuteEvent(MiraiEvent):
    """该事件发生时, 有一群组成员被管理员/群组解除禁言, 当 `operator` 为 `None` 时为应用实例所辖账号操作.

    ** 注意: 当监听该事件或该类事件时, 请优先考虑使用原始事件类作为类型注解, 以此获得事件类实例, 便于获取更多的信息! **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
        Group (annotation): 发生该事件的群组
        Member (annotation):
          - `"target"` (default, const, str): 被禁言的成员
          - `"operator"` (default, const, str, return:optional): 该操作的执行者, 可能是管理员或是群主, 也可能是应用实例所辖账号.
    """

    type = "MemberUnmuteEvent"
    member: Member
    operator: Optional[Member]

    class Dispatcher(BaseDispatcher):
        mixin = [ApplicationDispatcher]

        @staticmethod
        async def catch(interface: DispatcherInterface):
            if interface.annotation is Member:
                if interface.default == "target":
                    return interface.event.member
                elif interface.default == "operator":
                    return interface.event.operator
            elif interface.annotation is Group:
                return interface.event.member.group

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var memberMember
var operator : Union[Member, NoneType]
var type : str
class NewFriendRequestEvent (**data: Any)

当该事件发生时, 有一用户向机器人提起好友请求.

注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作.

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Addon Introduction: 该事件的处理需要你获取原始事件实例. 1. 读取该事件的基础信息: python event.supplicant: int # 发起加好友请求的用户的 ID event.sourceGroup: Optional[int] # 对方可能是从某个群发起对账号的请求的, mirai 可以解析对方从哪个群发起的请求. event.nickname: str # 对方的昵称 event.message: str # 对方发起请求时填写的描述

2. 同意请求: <code>await event.accept()</code>, 具体查看该方法所附带的说明.
3. 拒绝请求: <code>await event.reject()</code>, 具体查看该方法所附带的说明.
4. 拒绝并不再接受来自对方的请求: <code>await event.rejectAndBlock()</code>, 具体查看该方法所附带的说明.

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class NewFriendRequestEvent(MiraiEvent):
    """当该事件发生时, 有一用户向机器人提起好友请求.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例

    Addon Introduction:
        该事件的处理需要你获取原始事件实例.
        1. 读取该事件的基础信息:
        ``` python
        event.supplicant: int # 发起加好友请求的用户的 ID
        event.sourceGroup: Optional[int] # 对方可能是从某个群发起对账号的请求的, mirai 可以解析对方从哪个群发起的请求.
        event.nickname: str # 对方的昵称
        event.message: str # 对方发起请求时填写的描述
        ```

        2. 同意请求: `await event.accept()`, 具体查看该方法所附带的说明.
        3. 拒绝请求: `await event.reject()`, 具体查看该方法所附带的说明.
        4. 拒绝并不再接受来自对方的请求: `await event.rejectAndBlock()`, 具体查看该方法所附带的说明.
    """

    type = "NewFriendRequestEvent"
    requestId: int = Field(..., alias="eventId")
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    sourceGroup: Optional[int] = Field(..., alias="groupId")
    nickname: str = Field(..., alias="nick")
    message: str

    Dispatcher = EmptyDispatcher

    async def accept(self, message: str = "") -> NoReturn:
        """同意对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/newFriendRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.sourceGroup,
                "operate": 0,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def reject(self, message: str = "") -> NoReturn:
        """拒绝对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/newFriendRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.sourceGroup,
                "operate": 1,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

    async def rejectAndBlock(self, message: str = "") -> NoReturn:
        """拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

        Args:
            message (str, optional): 附带给对方的消息. 默认为 "".

        Raises:
            LookupError: 尝试上下文外处理事件.
            InvaildSession: 应用实例没准备好!

        Returns:
            NoReturn: 没有返回.
        """
        app = application.get()
        if not app.connect_info.sessionKey:
            raise InvaildSession("you must authenticate before this.")
        async with app.session.post(
            app.url_gen("resp/newFriendRequestEvent"),
            json={
                "sessionKey": app.connect_info.sessionKey,
                "eventId": self.requestId,
                "fromId": self.supplicant,
                "groupId": self.sourceGroup,
                "operate": 2,
                "message": message,
            },
        ) as response:
            response.raise_for_status()
            data = await response.json()
            raise_for_return_code(data)

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var message : str
var nickname : str
var requestId : int
var sourceGroup : Union[int, NoneType]
var supplicant : int
var type : str

Methods

async def accept(self, message: str = '') ‑> NoReturn

同意对方的加好友请求.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def accept(self, message: str = "") -> NoReturn:
    """同意对方的加好友请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/newFriendRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.sourceGroup,
            "operate": 0,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def reject(self, message: str = '') ‑> NoReturn

拒绝对方的加好友请求.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def reject(self, message: str = "") -> NoReturn:
    """拒绝对方的加好友请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/newFriendRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.sourceGroup,
            "operate": 1,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
async def rejectAndBlock(self, message: str = '') ‑> NoReturn

拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

Args

message : str, optional
附带给对方的消息. 默认为 "".

Raises

LookupError
尝试上下文外处理事件.
InvaildSession
应用实例没准备好!

Returns

NoReturn
没有返回.
Expand source code
async def rejectAndBlock(self, message: str = "") -> NoReturn:
    """拒绝对方的加好友请求, 并不再接受来自对方的加好友请求.

    Args:
        message (str, optional): 附带给对方的消息. 默认为 "".

    Raises:
        LookupError: 尝试上下文外处理事件.
        InvaildSession: 应用实例没准备好!

    Returns:
        NoReturn: 没有返回.
    """
    app = application.get()
    if not app.connect_info.sessionKey:
        raise InvaildSession("you must authenticate before this.")
    async with app.session.post(
        app.url_gen("resp/newFriendRequestEvent"),
        json={
            "sessionKey": app.connect_info.sessionKey,
            "eventId": self.requestId,
            "fromId": self.supplicant,
            "groupId": self.sourceGroup,
            "operate": 2,
            "message": message,
        },
    ) as response:
        response.raise_for_status()
        data = await response.json()
        raise_for_return_code(data)
class NudgeEvent (**data: Any)

当该事件发生时, 应用实例所辖账号被某个账号在相应上下文区域进行 "戳一戳"(Nudge) 的行为.

Graia Project 及 NatriumLab 都不是医学机构, 不负责关于性骚扰等方面的咨询, 请前往权威医学有关设施进行相应操作.

注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作.

Allowed Extra Parameters(提供的额外注解支持): GraiaMiraiApplication (annotation): 发布事件的应用实例

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

Expand source code
class NudgeEvent(MiraiEvent):
    """当该事件发生时, 应用实例所辖账号被某个账号在相应上下文区域进行 "戳一戳"(Nudge) 的行为.

    Graia Project 及 NatriumLab 都不是医学机构, 不负责关于性骚扰等方面的咨询, 请前往权威医学有关设施进行相应操作.

    ** 注意: 当监听该事件时, 请使用原始事件类作为类型注解, 以此获得事件类实例, 并执行相关操作. **

    Allowed Extra Parameters(提供的额外注解支持):
        GraiaMiraiApplication (annotation): 发布事件的应用实例
    """

    type: str = "NudgeEvent"
    supplicant: int = Field(..., alias="fromId")  # 即请求方 QQ
    target: int

    msg_action: str = Field(..., alias="action")
    msg_suffix: str = Field(..., alias="suffix")
    origin_subject_info: Dict[str, Any] = Field(..., alias="subject")

    friend_id: Optional[int] = None
    group_id: Optional[int] = None

    context_type: Literal["friend", "group"] = None

    @validator("friend_id", pre=True, always=True)
    def subject_handle_friend_id(cls, v, values, **kwargs):
        if values["origin_subject_info"]["kind"] == "Friend":
            return values["origin_subject_info"]["id"]

    @validator("group_id", pre=True, always=True)
    def subject_handle_group_id(cls, v, values):
        if values["origin_subject_info"]["kind"] == "Group":
            return values["origin_subject_info"]["id"]

    @validator("context_type", pre=True, always=True)
    def subject_handle_context_type(cls, v, values):
        return str.lower(values["origin_subject_info"]["kind"])

    Dispatcher = EmptyDispatcher

Ancestors

Class variables

var Dispatcher

所有非单函数型 Dispatcher 的基类, 用于为参数解析提供可扩展的支持.

var context_type : Literal['friend', 'group']
var friend_id : Union[int, NoneType]
var group_id : Union[int, NoneType]
var msg_action : str
var msg_suffix : str
var origin_subject_info : Dict[str, Any]
var supplicant : int
var target : int
var type : str

Static methods

def subject_handle_context_type(v, values)
Expand source code
@validator("context_type", pre=True, always=True)
def subject_handle_context_type(cls, v, values):
    return str.lower(values["origin_subject_info"]["kind"])
def subject_handle_friend_id(v, values, **kwargs)
Expand source code
@validator("friend_id", pre=True, always=True)
def subject_handle_friend_id(cls, v, values, **kwargs):
    if values["origin_subject_info"]["kind"] == "Friend":
        return values["origin_subject_info"]["id"]
def subject_handle_group_id(v, values)
Expand source code
@validator("group_id", pre=True, always=True)
def subject_handle_group_id(cls, v, values):
    if values["origin_subject_info"]["kind"] == "Group":
        return values["origin_subject_info"]["id"]