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

Discord同步消息至Minecraft机器人的文件写入问题求助

Discord消息拉取功能故障解决方案

故障核心原因

文件不生成问题基本是以下三类原因导致:

  • 命令未实际触发:copy函数缺少命令装饰器、命令前缀输入错误、机器人未获得基础发言权限,导致函数根本没有执行。
  • 路径匹配错误:使用相对路径file.txt时,文件会生成在执行python命令的终端工作目录,而非main.py文件所在目录,导致找错文件位置。
  • 执行过程静默报错:机器人缺少频道历史消息读取权限、未开启消息内容意图,导致拉取消息时抛出异常中断,代码未走到写文件的步骤,且没有抛出可见日志。

可直接复用的实现代码

提供两种实现,分别对应写txt文件、直接存内存变量两种需求:

import os
import discord
from discord.ext import commands

# 自行替换为你的命令前缀、机器人Token
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

@bot.command(name="copy")
async def copy(ctx):
    # 强制指定文件存储在main.py同级目录,彻底解决路径错位问题
    file_save_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "discord_msg.txt")
    collected_messages = []
    try:
        # 拉取当前频道最近1000条历史消息
        async for msg in ctx.channel.history(limit=1000):
            # 过滤无正文的消息(纯附件、嵌入卡片类消息)
            if msg.content:
                collected_messages.append(f"[{msg.created_at.strftime('%Y-%m-%d %H:%M')}] {msg.author.display_name}: {msg.content}")
        
        # 写入txt文件
        with open(file_save_path, "w", encoding="utf-8") as f:
            f.write("\n".join(collected_messages))
        
        # 执行完成后在频道返回提示,确认功能正常运行
        await ctx.send(f"执行完成,共收集{len(collected_messages)}条有效消息,文件存储路径:{file_save_path}")
    except Exception as e:
        await ctx.send(f"执行失败,错误信息:{str(e)}")
        raise e

@bot.event
async def on_ready():
    print(f"机器人已登录:{bot.user}")

if __name__ == "__main__":
    bot.run("替换为你自己的机器人Token")
  • 如果不需要落地txt文件,直接使用代码中的collected_messages列表变量即可,该变量已经按顺序存储了所有拉取到的有效消息,可直接对接后续Minecraft聊天转发逻辑。

配置注意事项

  • 必须在Discord开发者后台的机器人配置页,开启Message Content Intent、Server Members Intent两个权限开关,否则无法读取到消息正文,拉取到的content字段会是空值。
  • 把机器人拉进服务器后,需要给机器人分配对应频道的「查看频道」「查看消息历史」「发送消息」权限,否则会触发权限拦截。
  • 运行机器人时建议先cd到main.py所在目录,再执行python main.py启动,进一步避免相对路径错位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:21:48