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

使用Discordia开发Lua机器人时,print(message.content)返回nil或空白

Discordia机器人message.content返回nil/空白的解决方法

1. 开启Message Content Intent权限

Discord的权限政策要求机器人必须开启Message Content Intent才能读取消息内容:

  • 登录Discord开发者门户,进入你的应用Bot页面
  • 在Privileged Gateway Intents区域,开启Message Content Intent
  • 重新生成机器人邀请链接,确保包含读取消息内容的权限(可通过权限生成器勾选对应选项)

2. 过滤无内容的系统消息

成员加入通知、频道变更提醒这类系统消息本身没有content属性,会返回nil。可以在代码中先判断消息发送者是否为人类用户,过滤这类消息:

client:on('messageCreate', function(message)
    -- 仅处理人类用户发送的消息
    if not message.author.bot then
        local Content = message.content
        print(Content)
        if Content:lower() == '!ping' then
            message:reply('Pong!')
        end
    end
end)

3. 初始化客户端时声明必要网关意图

创建Discordia Client时必须显式添加messageContent意图,否则无法获取消息内容:

local discordia = require('discordia')
-- 初始化客户端时指定所需意图
local client = discordia.Client({
    intents = {
        discordia.Intents.guilds,
        discordia.Intents.guildMessages,
        discordia.Intents.messageContent -- 必须包含此意图
    }
})

client:on('ready', function()
    print('Logged in as '.. client.user.username)
end)

client:on('messageCreate', function(message)
    if not message.author.bot then
        local Content = message.content
        print(Content)
        if Content:lower() == '!ping' then
            message:reply('Pong!')
        end
    end
end)

client:run('Bot '..TOKEN)

内容的提问来源于stack exchange,提问作者Adrian Miałkowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:05:01