Skip to content
On this page

发送主动消息

主动消息限制

主动消息需要频道设置允许机器人推送,发送消息也存在数量限制。
详见官方文档 接入流程-语料配置-消息类型

AmiyaBot.send_message()

send_message 是发送主动消息的方法,它的第一个参数 chain 需要传入一个 Chain 对象。可以通过实例化一个无 Message 的 Chain 得到。

python
message = Chain().text('hello')
参数名类型释义默认值
chainChainChain 对象
user_idstr用户ID
channel_idstr子频道ID
direct_src_guild_idstr来源频道ID

发送一条主动子频道消息

python
bot = AmiyaBot(...)
message = Chain().text('hello')

await bot.send_message(message, channel_id='******')

发送一条主动私信 Beta

传入参数 user_id(用户ID)和 direct_src_guild_id(来源频道ID),send_message 将会发送主动私信消息。

python
bot = AmiyaBot(...)
message = Chain().text('hello')

await bot.send_message(message,
                       user_id='*******',
                       direct_src_guild_id='*******')

在多账号实例里使用 send_message

python
bot = MultipleAccounts(
    [
        AmiyaBot(appid='111111', ...),
        AmiyaBot(appid='222222', ...),
    ]
)

await bot['222222'].send_message(...)

在事件响应里使用 send_message

提示

事件响应的方法通常可以返回触发了该事件的实例。

事件监听

python
@bot.on_event('MESSAGE_DELETE')
async def _(event: Event, instance: BotAdapterProtocol):
    await instance.send_message(...)

异常监听

python
@bot.on_exception()
async def _(err: Exception,
            instance: BotAdapterProtocol,
            data: Union[Message, Event]):
    await instance.send_message(...)