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

Discord.Net上传图片时SocketMessage.Attachments为空问题排查

问题排查与解决
  • 检查网关意图配置:
    Discord Bot需要启用MessageContent和对应场景的消息意图(服务器消息用GuildMessages、私聊用DirectMessages),否则无法获取消息内容和附件。先在Discord开发者门户的Bot页面,找到「Privileged Gateway Intents」开启对应权限,再在代码初始化客户端时指定这些意图:

    var config = new DiscordSocketConfig
    {
        GatewayIntents = GatewayIntents.GuildMessages | GatewayIntents.MessageContent | GatewayIntents.DirectMessages
    };
    var client = new DiscordSocketClient(config);
    
  • 确认消息类型处理:
    SocketMessage是所有消息的基类,可先判断是否为用户发送的SocketUserMessage类型再处理,同时建议忽略机器人自身消息避免干扰:

    private async Task Client_MessageReceived(SocketMessage arg)
    {
        if (arg.Author.IsBot) return;
        
        if (arg is SocketUserMessage userMsg)
        {
            Console.WriteLine(userMsg.Content);
            Console.WriteLine(userMsg.Attachments.Count);
            // 可遍历附件查看具体信息
            foreach (var attachment in userMsg.Attachments)
            {
                Console.WriteLine($"附件地址:{attachment.Url},文件名:{attachment.Filename}");
            }
        }
    }
    
  • 验证Bot权限:
    确保Bot在对应服务器或私聊中拥有「读取消息历史」和「查看频道」的权限,缺少权限会导致无法获取完整消息数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:45:37