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...")
当用户打字时,如何让机器人在某个频道也开始打字事件,并在用户打字停止时停止。
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...")