Discord.js 当我踢一个人时我想在频道中看到它+作为嵌入消息

Posted

技术标签:

【中文标题】Discord.js 当我踢一个人时我想在频道中看到它+作为嵌入消息【英文标题】:Discord.js when I kick a person I want to see it in a channel + as a embed msg 【发布时间】:2020-07-21 00:51:31 【问题描述】:

我正在使用 discord.js: "discord.js": "12.1.1" 并且这个脚本看起来已经正常了。 所以我创建了命令处理程序,并在该命令文件夹中创建了一个名为“kickuser.js”的文件

权限很好,踢球按预期工作。 但现在我希望它也可以作为嵌入发送到特定频道 +。

踢人的人: 行动:踢/禁||这是为了以后 原因:原因……

昨天13:46他被踢的时候*

var kickEmbed = new Discord.MessageEmbed()
    .setDescription("Kick")
    .setColor("#ee0000")
    .addField("Kicked by", message.author);
  //.addField("Kicked user", ?)
 //.setFooter("time ?")

您可以在下面看到我的脚本“kickuser.js”

const discord = require("discord.js");

module.exports.run = async(bot, message, args) =>

    if(message.member.hasPermission("KICK_MEMBERS")) 

      if (!message.mentions.users.size) 
          return message.reply('You must tag 1 user.');
      

      else 

          let member = message.mentions.members.first();
          let reason = message.content.split(" ").slice(2).join(' ');

          if(member.kickable == false) 
              message.channel.send("That user cannot be kicked!");
              return;
          

          else 


              if(reason == ``) 
                  reason = (`No reason provided.`)
              


              await member.send(`You have been kicked from **$message.guild.name** with the reason: **$reason**`)
              .catch(err => message.channel.send(`⚠ Unable to contact **$member**.`));

              await member.kick(reason)
              await message.channel.send(`???? $member Reason: $reason`);

              console.log(`$message.author.tag kicked $member.user.tag from '$message.guild.name' with the reason: '$reason'.`);

            


      

  

      else 
      message.channel.send("You do not have permission to use kick.");
      return;
  


【问题讨论】:

【参考方案1】:

我稍微修改了您的代码以使其更简洁,并且还为您编写了嵌入代码。

您必须通过访问公会频道并使用message.guild.channels.cache.get() 查找要登录的频道的ID 来获取频道,然后使用.send(embed) 发送您创建的嵌入,就像您发送任何内容一样其他消息。

const discord = require("discord.js");

module.exports.run = async (bot, message, args) => 

    if (message.member.hasPermission("KICK_MEMBERS")) 

        if (!message.mentions.users) return message.reply('You must tag 1 user.');

        else 

            const channel = message.guild.channels.cache.get(CHANNEL_ID_HERE);
            const member = message.mentions.members.first();
            let reason = message.content.split(" ").slice(2).join(' ');

            if (member.kickable == false) return message.channel.send("That user cannot be kicked!");

            else 

                if (!reason) reason = (`No reason provided.`);

                await member.send(`You have been kicked from **$message.guild.name** with the reason: **$reason**`)
                    .catch(err => message.channel.send(`⚠ Unable to contact **$member**.`));

                await member.kick(reason);

                const kickEmbed = new discord.MessageEmbed()
                    .setAuthor(member.user.tag, member.user.avatarURL())
                    .setColor("#ee0000")
                    .setTimestamp()
                    .addField("Kicked By", message.author.tag)
                    .addField("Reason", reason);

                await channel.send(kickEmbed);

                console.log(`$message.author.tag kicked $member.user.tag from '$message.guild.name' with the reason: '$reason'.`);

            
        
     else 
        message.channel.send("You do not have permission to use kick.");
        return;
    

【讨论】:

我将尝试发布我现在遇到的所有错误:1 -> (node:19984) UnhandledPromiseRejectionWarning: ReferenceError: Discord is not defined // 可能的解决方案 go to kickusers.js go to line 1 并将 const discord 更改为 const Discord ||第二个错误-> 所以当我修复错误 1 ​​时,我不知道这是否是正确的解决方案。然后我得到这个错误:(node:16084) UnhandledPromiseRejectionWarning: TypeError: member.user.iconURL is not a function 你可以在这里找到我的pastebin:pastebin.com/zFUJTsYJ顺便说一句谢谢你的回复! 对不起,我的回答有两个错误,我已经修复了这些错误,继续复制整个代码块并测试它。 首先感谢您的宝贵时间。我遇到的下一个错误是:(node:21180) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined 您是否传递了const channel = message.guild.channels.cache.get(CHANNEL_ID_HERE); 中的频道ID?如果是这样,您是否将其作为字符串或数字传递?它必须是一个字符串。如果你确实传递了一个字符串,你确定你复制了正确的 ID? 不错!是的,我忘记将它粘贴为字符串......我很傻。最后缺少的是被踢的用户的头像。这就是它现在的样子:ibb.co/6ybkCRX

以上是关于Discord.js 当我踢一个人时我想在频道中看到它+作为嵌入消息的主要内容,如果未能解决你的问题,请参考以下文章

如何删除公会 discord.js 中的所有频道

Discord.js 机器人审计日志问题 (v12)

无法将 DM 发送到消息到 DB discord.js 中的存储用户

在 Discord 中使用 cron 在特定时间向特定频道发送消息

有没有办法对使用 discord.js 发送的每条消息做出反应

Discord.js - 删除特定频道