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

Discord.py 重复机器人活动场景下的关键词触发冷却计时器实现问题

Discord机器人单关键词独立冷却实现方案
  • 核心思路:通过字典存储每个关键词的最后一次成功触发时间,每次匹配到关键词后校验时间差,仅当超过设定冷却周期时才执行@提醒操作,保证不同关键词的冷却逻辑完全独立。

首先导入依赖模块并初始化全局配置:

import time

# 配置冷却时长,单位为秒,此处设置为5分钟
COOLDOWN_SECONDS = 300
# 存储结构:key为匹配到的关键词,value为最后一次成功触发的时间戳
keyword_last_trigger = {}

修改你原有的触发逻辑即可:

keyword_match = keyword_check(total_text)
if keyword_match[0]:
    # 此处假设keyword_match[1]为匹配到的具体关键词,可根据你的keyword_check实际返回调整
    matched_keyword = keyword_match[1]
    current_time = time.time()
    # 校验是否满足冷却条件:关键词无触发记录 或 距离上次触发已超过冷却时长
    if (matched_keyword not in keyword_last_trigger) or (current_time - keyword_last_trigger[matched_keyword] > COOLDOWN_SECONDS):
        await message.channel.send("<@&role_id>") # Discord@角色的标准格式为<@&角色ID>,可按需调整
        # 更新该关键词的最后触发时间
        keyword_last_trigger[matched_keyword] = current_time
  • 扩展适配方案:如果你的机器人需要支持多服务器/多频道的独立冷却,可将字典的key调整为(服务器ID, 频道ID, 匹配关键词)的元组,实现不同场景下的冷却规则隔离。
  • 持久化适配:如果需要机器人重启后仍保留冷却记录,可将keyword_last_trigger的数据存储到本地文件或轻量数据库中,重启时读取恢复即可。

内容的提问来源于stack exchange,提问作者UnthinkableDecimal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:15:03