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

Discord.py Auto-Filter命令新增累计3次违规禁言1小时功能问询

Discord.py 违禁词计数禁言功能实现方案

注:你现有代码中的on_message事件参数有误,discord.py的on_message事件原生仅接收message单个参数,不需要传入ctx,会直接影响功能运行,以下方案会同步修正该问题。

实现步骤

  • 第一步:新增全局计数变量,用字典存储用户ID和对应的违禁次数,以下为内存存储方案(机器人重启后计数会重置,如需持久化可自行接入本地文件/数据库):
# 在原badwords全局变量定义代码下方新增
global violation_counts
violation_counts = {} # 键为用户ID,值为违规次数
  • 第二步:修改on_message事件逻辑,新增计数判断和超时禁言逻辑,调用discord.py内置的timeout功能实现1小时禁言:
# 需提前导入datetime包处理时间
import datetime

async def on_message(message):
    # 忽略机器人自身发送的消息,避免循环触发
    if message.author.bot:
        return
    msg = message.content
    has_badword = False
    # 检测违禁词
    for word in badwords:
        if word in msg:
            has_badword = True
            break
    if has_badword:
        await message.delete()
        user_id = message.author.id
        # 更新违规次数
        if user_id in violation_counts:
            violation_counts[user_id] += 1
        else:
            violation_counts[user_id] = 1
        current_count = violation_counts[user_id]
        # 发送违规提示
        await message.channel.send(f"{message.author.mention} 请勿使用违禁词!当前已累计违规{current_count}次,累计3次将被禁言1小时。")
        # 达到3次触发禁言
        if current_count >= 3:
            try:
                # 禁言1小时,适配discord.py v2.x及以上版本
                await message.author.timeout(datetime.timedelta(hours=1), reason="累计3次发送违禁内容")
                await message.channel.send(f"{message.author.mention} 因累计3次发送违禁内容,已被禁言1小时。")
                # 禁言后重置该用户的违规计数,可根据需求调整
                violation_counts[user_id] = 0
            except:
                await message.channel.send(f"无法禁言用户{message.author.mention},可能是机器人权限不足。")
    # 注意此处替换为你自己定义的机器人实例名,如实例定义为client则改成client.process_commands
    await bot.process_commands(message)

注意事项

  • 机器人需要开启Moderate Members权限,同时机器人的角色排序要高于被禁言用户的角色,才能成功触发禁言操作
  • 如使用discord.py v1.x旧版本,没有内置timeout方法,可自行升级库版本,或者替换为临时封禁逻辑实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:15:04