【问题标题】:discord.js bot won't mention a userdiscord.js 机器人不会提及用户
【发布时间】:2020-09-08 09:47:54
【问题描述】:

我正在使用 discord.js v12.2.0+ 库创建一个不和谐机器人。我正在创建一个 !enslave 命令,该命令让机器人每 2 秒 ping 一次目标人 60 次。因此,例如!enslave @Hello123 让机器人发送此“折磨@Hello123:evil:”的垃圾邮件,但如果我发送!enslave 35203573250237,机器人不会发送“折磨未定义:邪恶:”。长数字是不和谐用户的 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.");
};

【问题讨论】:

    标签: javascript bots discord discord.js


    【解决方案1】:

    使用message.guild.members.fetch(args[0]) 代替message.guild.members.cache.get(args[0])。

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

    let user = message.mentions.members.first() || await message.guild.members.fetch(args[0])
    

    【讨论】:

    • 机器人回复“折磨 [object Promise] :evill:”,我也在使用 console.log(args[0]) 记录 args,它在控制台中记录了 2。
    • 你必须使用await,因为它返回一个Promise
    • 现在我用let user = message.mentions.members.first() || await message.guild.members.cache.get(args[0])得到“Torturing undefined :evil:”
    • 对不起,我的错误我刚刚修复了答案
    • 抱歉,机器人现在没有回复任何答案,我在控制台DiscordAPIError: Unknown User No debug adapter, can not send 'variables' 中得到了这个信息,我已经更新了我的代码以显示我拥有的 atm。当我执行 !enslave [userid] 时会发生这种情况,并且我确实使用了正确的 id,因为我做了 3 次。 @Syntle
    【解决方案2】:

    很抱歉回答晚了,但是请回复:

    let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);

    当您要使用 ID 时,您应该使用.get()。我还删除了await,并在末尾添加了;。

    【讨论】:

      猜你喜欢
      • 2019-03-21
      • 2021-07-08
      • 2019-04-16
      • 2020-12-28
      • 2018-08-17
      • 2021-07-02
      • 2021-01-08
      • 2020-12-24
      • 1970-01-01
      相关资源
      最近更新 更多