hoshino里支持转发消息,但是多条消息转发就需要合并成到一个列表里再用send_group_forward_msg()方法转发。开一个文章做个总结方便以后直接引用。
需要用到的模块:
from hoshino.config import NICKNAME
from hoshino.typing import CQEvent
发送者的昵称显示,转为列表:
if type(NICKNAME) == str:
NICKNAME = [NICKNAME]
定义回复链函数:
async def chain_reply(bot, ev, chain, msg):
if ev.detail_type == 'guild': # 频道里由gsend()发送频道消息
await gsend(ev, msg)
return chain
if not CHAIN_REPLY: # 是否不启用合并转发
await bot.send(ev, msg)
return chain
else: # 合并转发消息节点(按 Onebot v11 文档说明, data 应全为字符串)
data = {
"type": "node",
"data": {
"name": str(NICKNAME[0]), # 发送者显示名字
"user_id": str(ev.self_id), # 发送者QQ号
"content": str(msg) # 具体消息
}
}
chain.append(data)
return chain
准备工作完工。以下为使用方法:
async def function(bot, ev):
chain = [] # 创建一个空列表
message_1 = '1' # 消息1
chain = await chain_reply(bot, ev, chain, message_1) # 消息1加入转发消息节点中
message_2 = '2'
chain = await chain_reply(bot, ev, chain, message_1) # 消息2加入转发消息节点中
--中间省略--
await bot.send_group_forward_msg(group_id=ev['group_id'], messages=chain) # 合并转发消息,group_id为伪造消息来源的群聊号
正常情况下就可以使用了。
顺带,合并转发里好像并不能再套入合并转发……(禁止套娃)