Discord-py 当用户打字时,如何让机器人跟随打字,当用户停止时,机器人也停止在特定频道打字?

Discord-py When a user is typing, how to make the bot to follow the typing and when the user stop, the bot also stop typing in a specific channel?

当用户打字时,如何让机器人在某个频道也开始打字事件,并在用户打字停止时停止。

ctx.trigger_typing/ctx.无法使用打字,因为如果 he/she 正在打字,我们需要跟踪用户。

那么怎么做呢?

编辑:

启用 intents.typing 并在 Discord 开发人员门户中打开意图可以访问 on_typing 事件,您可以从您的代码中启用所有意图,例如:

intents = discord.Intents.all()
client = discord.Client(intents=intents)

键入事件可以简单地使用 on_typing 事件调用,

@client.event
async def on_typing(channel, user, when):
    print(f"{user} is typing message in {channel} {when}")

如果你想让你的机器人有一个输入状态,你可以使用 ctx.typing(): 后跟它会发送的内容。

这是一个 on_message 事件示例,

@client.event
async def on_message(message):
    async with message.channel.typing():
        await message.channel.send('Typing status invoked')
        await client.process_commands(message)

命令用法,也可以添加休眠事件来控制打字时间

@client.command()
async def type(ctx):
    async with ctx.typing():
        await asyncio.sleep(2)
    await ctx.send("Typing...")