Discord.py机器人记录最新n条消息无响应问题排查
解决Discord.py机器人无法响应命令并记录消息的问题
你遇到的问题核心是代码里没正确配置Message Content意图——虽然你已经在Discord开发者后台开启了这个特权意图,但代码里没同步设置,导致机器人接收不到命令消息内容,所以执行!record_last_messages 10没反应,同时弹出那个警告。
直接修改代码里的intents配置部分,加上intents.message_content = True即可,修正后的完整代码如下:
import discord from discord.ext import commands intents = discord.Intents.default() intents.messages = True # 新增这一行,开启消息内容意图 intents.message_content = True bot = commands.Bot(command_prefix='!', intents=intents) @bot.event async def on_ready(): print(f'Logged in as {bot.user.name}') @bot.command() async def record_last_messages(ctx, n: int): channel = ctx.channel # 取n+1条是为了排除触发命令的这条消息,逻辑没问题 messages = await channel.history(limit=n+1).flatten() messages.reverse() # 反转后按时间顺序排列 with open('recorded_messages.txt', 'w', encoding='utf-8') as file: for message in messages: file.write(f'{message.author.name}: {message.content}\n') await ctx.send(f'{n} last messages recorded!') # 替换成你的真实机器人Token bot.run('你的机器人Token')
修改后重启机器人,再执行命令就能正常工作了:机器人会记录当前频道最新的n条消息(排除命令本身),保存到recorded_messages.txt,并在频道发送确认消息。
内容的提问来源于stack exchange,提问作者Cyamites
相关产品推荐
相关产品推荐

