You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:06:32