首页 > 解决方案 > 如何为 unban 命令使用的用户发送 DM?

问题描述

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

解除禁令后,我希望通过私信将嵌入消息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);
    }
    })
}}

标签: discord.js

解决方案


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


推荐阅读