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 当我踢一个人时我想在频道中看到它+作为嵌入消息的主要内容,如果未能解决你的问题,请参考以下文章
无法将 DM 发送到消息到 DB discord.js 中的存储用户
在 Discord 中使用 cron 在特定时间向特定频道发送消息