当前位置: 首页 > 知识库问答 >
问题:

discord.js bot不会提及用户

诸葛砚
2023-03-14

我正在使用discord.jsV12.2.0+库创建一个discord bot。我正在创建一个!奴役命令,让机器人每2秒ping目标人一次60次。例如,!enslave@hello123让机器人发送“torturing@hello123:evil:”垃圾邮件,但如果我执行!enslave35203573250237并发送“torturing undefined:evil:”,机器人就不会发送。长数字是不一致用户的ID。

这是我的enslave.js代码:

module.exports = {
    run: async(client, message, args) => {
        if(!message.member.hasPermission('ADMINISTRATOR')) {
            message.channel.send("You don't have permission to use that command.");
        }
        else {
            try {
                let counter = 0;
                message.delete()
                let user = message.mentions.members.first() || await message.guild.members.fetch(args[0])
                console.log(args[0])
                let i = setInterval(function(){
                    const bot = client.emojis.cache.get('712787936734609419');
                    message.channel.send(`Torturing ${user} ${bot}`);
                    counter++;
                    if(counter === 60) {
                        clearInterval(i);
                    }
                }, 2000);
            }
            catch(err) {
                console.log(err);
            }
        }
    },
    aliases: [],
    description: 'Make ImmortusMC torture someone'
}

这是我的message.js代码:

const PREFIX = process.env.PREFIX;
module.exports = (client, message) => {
    if(message.author.bot) return;
    if(!message.content.startsWith(PREFIX)) return;
    let cmdName = message.content.substring(message.content.indexOf(PREFIX)+1).split(new RegExp(/\s+/)).shift();
    let argsToParse = message.content.substring(message.content.indexOf(' ')+1);
    if(client.commands.get(cmdName))
        client.commands.get(cmdName)(client, message, argsToParse);
    else
        console.log("Command does not exist.");
};

共有1个答案

钮安歌
2023-03-14

使用message.guild.members.fetch(args[0])而不是message.guild.members.cache.get(args[0])

获取undefined的原因是成员尚未缓存,因此无法使用members缓存获取它们。

js prettyprint-override">let user = message.mentions.members.first() || await message.guild.members.fetch(args[0])
 类似资料:
  • 出于某种原因,我使用Node编写的bot。和不和谐。当成员加入时,js不会将角色分配给他们。有人能帮忙吗? 我试过两种

  • 我正在写我的第一个机器人,我有一些审计日志的问题。 我想创建审计日志,这将是发送信息,谁踢了一个成员从服务器。 我在网上找到了一些东西,但它的工作方式真的很奇怪。当我踢我的测试帐户时,没关系,这表明我踢了他。但是当我想自己离开时,日志上说我正在踢这个测试帐户。更重要的是,当我的朋友踢这个帐户时,它说他踢了他是没关系的,但当我再次独自离开时,它说这个朋友踢了他。我不知道如何修理它。 这是我的代码:

  • 禁止点击 未提及的国家 ,这个操作会使在数据集中未提到过的国家在3D地球上不可选。默认设置下此功能不开启。 controller.disableUnmentioned(true); // 禁用此功能 controller.disableUnmentioned(false);

  • 我在支持库的文本输入中包含了一个编辑文本,我发现无法使提示出现在字段的中心。我已经尝试了在其他堆栈溢出讨论中发现的所有常用技巧,正如您从代码示例中看到的那样,但提示仍然顽固地出现在编辑文本的左侧。我该如何解决这个问题? 请不要建议使用paddingLeft或paddingStart来做到这一点——我想要一些能够在不同设备上干净地工作的东西,所以它必须是一个直接的解决方案,而不是一个变通办法。 需要

  • 我对编码有点陌生,我正在制造一个不和谐的机器人。JSV12,我想知道如何为加入服务器的新用户添加验证。而不是向他们发送他们必须完成的验证码,或者只是添加一个他们点击的反应角色,它会给他们x角色,如“成员”或“已验证”提前感谢:D

  • 让B从a类派生。通过阅读各种帖子,我有一个印象,铸造像在 出于某种原因,不鼓励使用reinterpret_pointer_cast。但是,出于性能原因,我希望避免创建新的shared_ptr。上述代码合法吗?这会导致不明确的行为吗?它似乎在gcc和VisualStudio中都有效。