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是表情的idElements.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 |
- 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,accountPermprint(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)
退群