如何获取Discord服务器最后一条消息内容?Python机器人开发求助
解决Discord机器人获取最后一条消息的问题
首先我注意到你贴出的代码片段不完整,on...后面的事件定义被截断了,这大概率是代码无法正常运行的原因之一。结合你的需求,我来帮你梳理正确的实现思路和可运行的代码示例。
关键前提说明
- 监听用户消息需要用到Discord.py的
on_message核心事件,这是捕获消息的基础入口。 - 由于你使用的是Python 3.6.4,要注意Discord.py的版本兼容性:Python 3.6.x仅支持Discord.py v1.7.3,更高版本已经不再兼容该Python版本,安装时需要指定版本:
pip install discord.py==1.7.3
完整代码示例(获取并重复消息)
下面是一个基础实现,包含消息监听、避免自循环、以及获取/重复消息的逻辑(你可以替换示例中的触发条件为你的特定需求):
import discord TOKEN = '你的机器人令牌' client = discord.Client() @client.event async def on_ready(): print(f'已成功以 {client.user} 身份登录') @client.event async def on_message(message): # 防止机器人重复自己发送的消息,避免死循环 if message.author == client.user: return # 这里替换为你的特定触发条件,比如关键词、用户权限等 if message.content.startswith('重复这条消息'): # 直接重复当前触发的消息 await message.channel.send(message.content) # 如果需要获取频道内的最后一条历史消息(非当前触发消息),可以用这段代码: # history = await message.channel.history(limit=1).flatten() # last_message = history[0] # await message.channel.send(last_message.content) client.run(TOKEN)
常见问题排查
- 令牌错误:确保
TOKEN是从Discord开发者平台正确获取的机器人专属令牌,绝对不要泄露给他人。 - 权限不足:邀请机器人到服务器时,需要勾选
发送消息和读取消息历史的权限,否则机器人无法正常读取和发送消息。 - 版本不兼容:再次确认安装的Discord.py版本是v1.7.3,最新版本会因Python版本过低报错。
内容的提问来源于stack exchange,提问作者user9553863
相关产品推荐
相关产品推荐

