Discord.py中如何为机器人的消息响应添加延迟
discord.py 延迟发送消息响应实现方案
要实现接收消息后延迟数秒再发送响应,直接借助异步框架自带的休眠方法即可,不需要额外安装依赖,注意不要用同步阻塞的休眠方法避免机器人卡死。
- 第一步:导入异步标准库
asyncio,discord.py本身依赖该库运行,不需要额外安装 - 第二步:在执行发送消息的逻辑前,添加
await asyncio.sleep(你需要延迟的秒数)语句,休眠结束后再执行发送操作
完整代码示例
import discord import asyncio # 配置必要的消息权限 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_message(message): # 跳过机器人自身发送的消息,防止响应循环 if message.author.bot: return # 替换为你自己的消息匹配逻辑 if message.content == "触发响应": # 延迟5秒发送,可自行修改数值,单位为秒 await asyncio.sleep(5) await message.channel.send("response") client.run("你的机器人令牌")
避坑提示:禁止使用
time.sleep()实现延迟。该方法为同步阻塞方法,执行时会卡住整个机器人的事件循环,延迟期间机器人无法处理任何消息、交互、心跳事件,轻则所有功能卡顿,重则触发网关掉线。
如果需要支持延迟过程中取消发送(比如用户在延迟期间撤回了触发消息就不发响应),可以把延迟和发送逻辑封装为asyncio.Task,配合on_message_delete事件取消对应任务即可,普通固定延迟场景用上述基础方案就可以满足需求。
内容的提问来源于stack exchange,提问作者Harald Kollstedt
相关产品推荐
相关产品推荐

