【发布时间】:2021-05-05 08:57:24
【问题描述】:
当用户打字时,如何让机器人在某个频道也启动打字事件,并在用户打字停止时停止。
ctx.trigger_typing/ctx.typing 无法使用,因为我们需要跟踪用户是否正在打字。
那该怎么做呢?
【问题讨论】:
标签: python python-3.x discord.py discord.py-rewrite
当用户打字时,如何让机器人在某个频道也启动打字事件,并在用户打字停止时停止。
ctx.trigger_typing/ctx.typing 无法使用,因为我们需要跟踪用户是否正在打字。
那该怎么做呢?
【问题讨论】:
标签: python python-3.x discord.py discord.py-rewrite
编辑:
启用 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...")
【讨论】:
on_typing 事件怎么样?