Discord机器人异常:指定频道所有消息均被删除问题求助
Discord机器人频道消息过滤问题修复
问题根源
- Intents配置错误:你创建
client时用了默认Intents,但单独定义的message_content=True没有传递给client,导致机器人无法读取消息内容。message.content始终为空,自然永远不等于"cado",所以所有消息都被删除。 - 频道ID类型不匹配:
message.channel.id是整数类型,你用了字符串占位符'id',实际要替换成目标频道的数字ID,且不能加引号。 - 未排除机器人自身消息:如果不跳过机器人自己的消息,可能引发不必要的删除操作。
修正后的代码
import os import discord # 正确配置Intents,开启message_content权限 intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print('BOTCADO ONLINE') @client.event async def on_message(message): # 跳过机器人自己的消息,避免循环操作 if message.author == client.user: return # 替换成你的目标频道数字ID(不要加引号) target_channel_id = 123456789012345678 if message.channel.id == target_channel_id: # 严格匹配"cado",如果要忽略大小写可以改成message.content.lower() == "cado" if message.content != "cado": await message.delete() client.run(os.getenv('TOKEN'))
关键修改说明
- 先配置包含
message_content的Intents,再传给Client实例,确保机器人能正常读取消息内容。 - 把频道ID替换成实际的数字ID(可以在Discord开启开发者模式后右键频道复制ID)。
- 添加机器人自身消息的判断,避免不必要的操作。
内容的提问来源于stack exchange,提问作者avi
相关产品推荐
相关产品推荐

