You need to enable JavaScript to run this app. discord.py 广告屏蔽功能失效?频道推广链接自动删除代码不生效
优惠活动
大模型
产品
解决方案
定价
更多

discord.py 广告屏蔽功能失效?频道推广链接自动删除代码不生效

discord.py 推广链接自动屏蔽功能失效排查

常见的失效触发点有3个,按优先级从高到低排列:

  • 未开启消息内容特权意图:discord.py 2.0及以上版本默认关闭message_content网关意图,没有这个权限的bot无法读取普通频道消息的实际文本,所有基于消息内容的判断逻辑完全不会触发。
  • Bot实例初始化时未加载对应意图:仅在Discord开发者门户开启意图开关不够,代码里初始化Bot对象时如果没有显式声明需要消息内容权限,程序运行时依然无法获取消息文本。
  • 频道权限不足:bot在目标频道没有「管理消息」权限时,即便检测到了推广链接,调用删除接口时会直接抛出权限报错,无法完成删除操作。

修复方案

  1. 登录Discord开发者后台,进入对应Bot的设置页,在「Bot」板块的Privileged Gateway Intents区域,打开Message Content Intent开关并保存。
  2. 修改代码逻辑,补充意图加载、自循环拦截、权限校验的逻辑,完整可运行的代码参考如下:
import discord
from discord.ext import commands

# 显式初始化网关意图
intents = discord.Intents.default()
intents.message_content = True
Bot = commands.Bot(command_prefix="!", intents=intents)

@Bot.event
async def on_message(message):
    # 拦截Bot自身发送的消息,避免检测逻辑自触发形成死循环
    if message.author.bot:
        return
    # 检测推广链接
    if "discord.gg" in message.content.lower():
        # 校验Bot是否有当前频道的管理消息权限
        guild = message.guild
        if guild and message.channel.permissions_for(guild.me).manage_messages:
            await message.delete()
            await message.channel.send("Luften Reklam Yapmaurn!")
    # 保证指令处理流程不被拦截
    await Bot.process_commands(message)

额外注意事项

  • 不要遗漏Bot.process_commands(message)调用,否则事件重写后所有注册的指令都会完全失效。
  • 检测规则可以根据需求扩展,比如把广告关键词做成列表,遍历列表匹配消息内容,不用写多组重复判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 05:45:04