MessageChain

1
from graia.application.message.chain import MessageChain

用于处理消息的数据结构,包含一个有序列表

  • MessageChain.asDisplay()
    得到字符串形式的消息表示,返回字符串
  • MessageChain.root
    返回消息链列表
  • MessageChain.doc
    返回消息链的API文档说明
  • MessageChain.- Module
    返回消息链的模块绝对引用
  • MessageChain.create(<list/tuple>)
    创建一个消息链结构,其中list/tuple可以包含能够获取的类型元素,返回创建的消息链
  • MessageChain.isImmutable()
    判断消息链是否为可变,可变返回True,不可变返回False,默认接受的消息为不可变
  • MessageChain.asMutable()
    将消息链转换为可变的,返回可变的消息链
  • MessageChain.isSendable()
    检查消息链是否可以被正确发送,可发送返回True,不可发送返回False
  • MessageChain.asSendable()
    将消息链转换为可以发送的新消息链,返回可能可以正确发送的消息链
  • MessageChain.has(T)
    消息链中是否存在某种消息元素,亦可使用
    T in MessageChain
    如果有则返回True否则返回False
  • MessageChain.get(T)
    取出消息链中某种消息元素,以列表方式返回
    亦可以使用 MessageChain[T]
  • MessageChain.join(*MessageChains)
    将多个MessageChain按顺序拼合“
    返回拼合后的消息链
  • MessageChain.plusWith(*MessageChain)
    方法将在现有的基础上将另一消息链拼接到原来实例的尾部, 并生成, 返回新的实例; 该方法不改变原有和传入的实例.
  • MessageChain.plus(*MessageChain)
    方法将在现有的基础上将另一消息链拼接到原来实例的尾部; 该方法更改了原有的实例, 并要求 isMutable 方法返回 True 才可以执行.
  • MessageChain.asSerializationString()
    将消息链对象转为以 “Mirai 码” 表示特殊对象的字符串
    返回字符串
  • MessageChain.fromSerializationString(string)
    将以 “Mirai 码” 表示特殊对象的字符串解析为消息链, 不过可能不完整
    返回消息链,不可变
  • MessageChain.asMerged()
    把相邻的Plain元素合并为一个Plain元素
  • MessageChain.subchain(slice)
    切片操作
    类似list切片方式
    返回切片后的 MessageChain
  • MessageChain.exclude(T)
    将消息链中某种元素排除
    返回新的消息链
  • MessageChain.include(T)
    只保留消息链中某种元素
    返回新消息链

Elements

1
import graia.application.message.elements.internal as Elements
  • Elements.Plain(string)
    实例化一个Plain元素,用于承载消息中的文字

  • Elements.Source
    表示消息在一个特定聊天区域内的唯一标识,收到的消息链中存在,只能够获取

  • Elements.Quote(id,groupID,senderID,targetID,origin)
    表示消息中回复功能,
    id:回复的消息在群内的唯一标识,通过Elements.Source得到
    groupID:群号
    senderID:原消息发送人
    targetID:群号
    oringin:发送的消息链

    消息链中应该有:原消息链的**__root__列表, At(type=‘At’,target=qq号,display=’@谁谁谁(群内id)’), Plain(’ ‘),Plain(“内容”)**

  • Elements.At(id)
    表示@某人

  • Elements.AtAll()
    管理员有效,@全体成员

  • Elements.Face(id)
    表示一个表现,QQ内置的表情,id是表情的id

  • Elements.ImageType(Enum)
    Friend = “Friend”
    Group = “Group”
    Temp = “Temp”
    Unknown = “Unknow”
    是一个类型的定义,不需要直接调用

  • Elements.Image()
    imageID:是一个16进制字符串
    url:链接位置
    path
    type:图片属于哪里(ImageType定义)
    关于Image的方法

  • Elements.FlashImage(Image)
    发送闪照,需要先通过Image方法创建一个Image对象
    亦可以直接 Image.asFlash()

  • Elements.Xml(str)
    xml消息

  • Elements.Json(str)

  • Elements.App(str)
    app消息

  • Elements.PokeMethods(Enum)
    是一个类型定义,不需要直接调用
    Poke = “Poke”
    ShowLove = “ShowLove”
    Like =“Like”
    Heartbroken=“Heartbroken”
    SixSixSix=“SixSixSix”
    FangDaZhao = “FangDaZhao”

  • Elements.Poke(PokeMethods)

Image

1
from graia.application.message.elements.internal import Image

> 返回到Elements

  • Image.fromLoacalFile(filepath)
    从本地获取一张图片
    返回ShadowElement,包含了一个asFlash方法,可以作为闪照发送
    Image.fromLocalFile(path).asFlash()
  • Image.fromUnsafePath(filepath)
    不检查路径安全性,让上层协议(mirai-api-http)处理图片文件
  • Image.fromUnsafeBytes()
    从不保证有效性的bytes中创建一个ShadowElement,并且上传,同样包含一个asFlash方法
    不推荐,安全性低
  • Image.fromNetworkAddress(url)
    从不保证有效性的网络位置中创建一个ShadowElement,在发送的时候从url获得图片并且上传
    可能抛出任何形式的网络错误
    可以使用asFlash方法
  • Image.fromUnsafeAddress(url)
    让上层协议(mirai-apii-http)处理图片文件
  • Image.asDisplay()
    返回字符串”[图片]”
  • Image.http_to_bytes(url)
    从远端服务器获取图片的 bytes, 注意, 你无法获取并不包含 url 属性的本元素的 bytes
  • Image.asFlash()
    设为闪照发送
  • Image.asSerializationString()
    将消息链对象转为以 “Mirai 码” 表示特殊对象的字符串

Massages

定义了几种消息的类型

1
import graia.application.event.messages as Messages
  • FriendMessage
    好友对话事件
  • GroupMessage
    群对话事件
  • TempMessage
    临时对话事件

Friend模块

定义了friend的几种属性,需要在监听中声明

1
from graia.application.friend import Friend
  • id:qq号
  • nickname:昵称
  • remark:好像访问不到??

Group模块

定义了group的一些属性,需要在监听中声明,例如:

async def group_message_handler(app: GraiaMiraiApplication, message: MessageChain, group: Group,member: Member):

1
import graia.application.group as Group

Group.Group

  • Group.Group.id:群id
  • Group.Group.name:群名称
  • Group.Group.accountPerm:账号在群中的权限

Group.MemberPerm

作为字典枚举,并不需要主动调用

  • .Member # 普通成员
  • .Administrator # 管理员
  • .Owner # 群主

Group.Member

描述用户在群组中所具备的有关状态,包括所在群组,群中昵称,所具备的权限,唯一的ID

  • .id:说话人的QQ号
  • .name:说话人的群昵称
  • .permission:说话人的权限等级
  • .group:上面的Group.Group所有内容

Group.GroupConfig

描述群内各项功能的设置(使用方法不明)

  • name
  • announcement
  • confessTalk
  • allowMemberInvite
  • autoApprove
  • anonymousChat

Group.MemberInfo

描述群组成员的可修改状态,修改需要权限(使用方法不明)

  • name
  • specialTitle

GraiaMiraiApplication类

大多数的功能都被存在这个类中

1
from graia.application import GraiaMiraiApplication

.getVersion()

返回mirai-api-http的版本

.getGroup(int)

返回对应群号的群组信息(为空则None)
id,name,accountPerm
print(app.getGroup(<Id>))

.groupList()

print(await app.groupList())

.getMember(Group int,member int)

从已知群组和已知成员的id获得成员的信息

print(await app.getMember(<ID>,<ID>))

.memberList(Group int)

从已知群组中获取群内所有成员的信息列表

.friendList()

获取所有好友的信息列表

print(await app.friendList())

.getFriend(int)

根据好友的id获取Friend实例

.sendFriendMessage(Friend,MessageChain[,quote])

向好友发送消息,quote为回复信息断,可以选择

.sendGroupMessage(Group,MessageChain[,quote])

向群组发送消息

.sendTempMessage(Group/ID,Member/ID,messageChain[,quote])

向群内成员发起临时会话

.revokeMessage(target)

撤回消息(2min以内)

target (Union[Source, BotMessage, int]): 特定信息的 messageId, 可以是 Source 实例, BotMessage 实例或者是单纯的 int 整数.

.messageFromId(source[Source, int])

尝试从已知的 messageId 获取缓存中的消息

.muteAll(group)&.unmuteAll(group)

全员禁言

.mute(group,member,time)、unmute(group,membder)

禁言指定群友

time指禁言时长

.kick(group,membder)

群内踢掉某人

.quit(group)

退群