【问题标题】:I would like my bot to send a dm to the person who and ban我希望我的机器人向执行并禁止的人发送 dm
【发布时间】:2022-01-09 11:47:24
【问题描述】:

我制作了我的机器人等,但我想这样做,以便机器人在禁止我没有找到的人时发送 dm 我搜索了 3 个小时但没有成功

exports.run = (client, message, args) => {
    if (message.member.hasPermission('BAN_MEMBERS')) {
        const user = message.mentions.users.first();
        let reason = args.slice(1).join(' ');
        if (!reason) reason = "No reason provided";
        if (user) {
            const member = message.guild.member(user);
            user.send("You we're banned from **__" + message.guild.name + "__** for **__" + reason + "__**")
                .catch(() => message.reply("Unable to send message to user"))
                .then(() => member.ban({
                    reason: "BANNED!"
                }))
                .catch(err => {
                    message.reply('I was unable to ban the member');
                    console.error(err);
                });
            if (member) {
                member
                    .ban({})
                    .then(() => {
                        message.reply(`Successfully banned **__${user.tag}__** for **__${reason}__**`);
                    })
                    .catch(err => {
                        message.reply('I was unable to ban the member');
                        console.error(err);
                    });
            } else {
                message.reply("That user isn't in this guild!");
            }
        } else {
            message.reply("You didn't mention the user to ban!");
        }
    } else {
        message.reply('you don\'t have permission to ban members!')
    }
}

【问题讨论】:

    标签: discord discord.js bots


    【解决方案1】:

    这里有一些缺陷。

    首先,message.guild.member() 不是一种方法。如果需要,您应该使用message.mentions.members.first(); 而不是message.mentions.users.first(),然后通过GuildMember.user(在您的情况下为user.user,除非您重命名变量)访问User 对象。您可以使用guild.members.fetch(),但这更容易。

    其次,您尝试发送消息,如果您不能,请不要打扰禁止。这意味着如果用户阻止您的机器人,他们可以防止被它禁止。因此,要使用您当前的代码解决此问题,只需执行

    user.send("message")
    .catch(err => {
        message.reply("User could not be messaged");
    });
    user.ban( {reason: "BANNED!"} )
    .catch(err => {
        message.reply("User could not be banned");
    });
    

    如果在此之后继续出错,请回复您收到的错误。

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 2021-06-13
      • 2021-10-05
      • 1970-01-01
      • 2022-08-11
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      相关资源
      最近更新 更多