如何为 unban 命令使用的用户发送 DM?

时间:2021-07-03 17:27:11

标签: discord.js

我正在为一个禁止命令开发一个取消禁止命令。

当禁令解除时,我希望通过私人消息将嵌入消息unbanEmbeduserside发送给被禁止的用户。此嵌入消息将让被禁止的用户知道它。

我的 unban 命令的代码如下。在此先感谢我的朋友,他们将帮助我如何编写代码,以便我可以执行我在上面文章中提到的操作。

async run (bot, message, args) {
    message.delete(message.author);
    if (!message.member.hasPermission("BAN_MEMBERS"))
    return message.author.send("Buna yetkin yok.")

    let unbanEmbednotfoundmessage = new discord.MessageEmbed()
    .setColor(0xdb2727)
    .setDescription(`Kullanıcı bulunamadı veya yasaklı değil.`);

    let userID = args[0]
    message.guild.fetchBans().then(bans => {
    if(bans.size == 0) return message.channel.send(unbanEmbednotfoundmessage);

    let bUser = bans.find(b => b.user.id == userID)
    if(!bUser) return message.channel.send(unbanEmbednotfoundmessage)

    let unbanEmbeduserside = new discord.MessageEmbed()
    .setAuthor('YASAKLAMA KALDIRILDI', 'https://i.hizliresim.com/midfo22.jpg')
    .setDescription(`
    *Yasaklamanız kaldırıldı, sunucuya tekrar katılabilirsiniz!*
    Yasaklamayı Kaldıran Yetkili: **${message.author.username}**
    `)
    .setColor(0xc8b280)
    .setTimestamp()
    .setFooter('gtaplus Multiplayer Community');

    let unbanEmbedserverside = new discord.MessageEmbed()
    .setAuthor('YASAKLAMA KALDIRMA', 'https://i.hizliresim.com/midfo22.jpg')
    .setDescription(`
    Yasağı Kaldırılan Kullanıcı: **${userID}**
    Yasaklamayı Kaldıran Yetkili: **${message.author.username}**
    `)
    .setColor(0xc8b280)
    .setTimestamp()
    .setFooter('gtaplus Multiplayer Community');

    message.guild.members.unban(bUser.user).then(() => message.channel.send(`**${userID}** yasaklaması kaldırıldı.`));

    if (unbanEmbedserverside){
        const log = message.guild.channels.cache.find(channel => channel.name === 'server-log')
        log.send(unbanEmbedserverside);
    }
    })
}}

1 个答案:

答案 0 :(得分:2)

在 Discord 中,任何用户(包括机器人)都需要与用户一起在服务器中才能向他们发送直接消息。不幸的是,这意味着除非机器人与被禁止的用户共享服务器,否则您将无法发送消息。如果机器人确实共享了另一台服务器,那么 Skularun Mrusal 在您帖子的评论中提供的答案应该会起作用。