【问题标题】:Unhandled Rejection ReferenceError: Cannot access 'message' before initialization未处理的拒绝引用错误:初始化前无法访问“消息”
【发布时间】:2020-06-19 12:16:38
【问题描述】:

我正在编写一个 discord.js 机器人,它给了我标题中列出的错误。我正在使用 discord.js 11 当用户添加角色时,这段代码会赋予用户角色。

client.on('raw', async event => {
if (!events.hasOwnProperty(event.t)) return;

const {
    d: data
} = event;
const user = client.users.get(data.user_id);
const channel = client.channels.get(data.channel_id);

const message = message.channel.fetchMessage(data.message_id);
const member = message.guild.members.get(user.id);

const emojiKey = (data.emoji.id) ? `${data.emoji.name}:${data.emoji.id}` : data.emoji.name;
let reaction = message.reactions.get(emojiKey);

if (!reaction) {
    // Create an object that can be passed through the event like normal
    const emoji = new Emoji(client.guilds.get(data.guild_id), data.emoji);
    reaction = new MessageReaction(message, emoji, 1, data.user_id === client.user.id);
}

let embedFooterText;
if (message.embeds[0]) embedFooterText = message.embeds[0].footer.text;

if (
    (message.author.id === client.user.id) && (message.content !== CONFIG.initialMessage ||
        (message.embeds[0] && (embedFooterText !== CONFIG.embedFooter)))
) {

    if (!CONFIG.embed && (message.embeds.length < 1)) {
        const re = `\\*\\*"(.+)?(?="\\*\\*)`;
        const role = message.content.match(re)[1];

        if (member.id !== client.user.id) {
            const guildRole = message.guild.roles.find(r => r.name === role);
            if (event.t === "MESSAGE_REACTION_ADD") member.addRole(guildRole.id);
            else if (event.t === "MESSAGE_REACTION_REMOVE") member.removeRole(guildRole.id);
        }
    } else if (CONFIG.embed && (message.embeds.length >= 1)) {
        const fields = message.embeds[0].fields;

        for (const {
                name,
                value
            } of fields) {
            if (member.id !== client.user.id) {
                const guildRole = message.guild.roles.find(r => r.name === value);
                if ((name === reaction.emoji.name) || (name === reaction.emoji.toString())) {
                    if (event.t === "MESSAGE_REACTION_ADD") member.addRole(guildRole.id);
                    else if (event.t === "MESSAGE_REACTION_REMOVE") member.removeRole(guildRole.id);
                }
            }
        }
    }
}

});

错误说这行是错误的:const message = message.channel.fetchMessage(data.message_id); 但我不知道如何解决它。

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    好的,你的问题是这样的。

    基本上,您正在尝试使用尚不存在的相同变量声明一个变量。

    尝试更改此行:const message = message.channel.fetchMessage(data.message_id); 对此:const message = channel.fetchMessage(data.message_id);

    希望这会有所帮助。

    附:看起来您使用的是 discord.js v11,我建议升级到 v12,因为 v11 不支持 10 月份推出的新 API。

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 1970-01-01
      • 2021-05-17
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多