Hoshino Bot合并转发功能的实现

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为伪造消息来源的群聊号

正常情况下就可以使用了。

顺带,合并转发里好像并不能再套入合并转发……(禁止套娃)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇