【发布时间】:2021-11-02 10:49:00
【问题描述】:
我正在尝试制作一个静音命令,该命令还会在日志通道中发送嵌入信息,以便记录用户已被静音。这是我的错误:
[Spuka#2670]: [mute]
/home/container/commands/mute.js:68
channel.send(logEmbed);
^
TypeError: Cannot read property 'send' of undefined
这是我的 mute.js 文件:
const Discord = require('discord.js');
const { Client, WebhookClient, MessageEmbed, Bot, Intents } = require('discord.js');
const client = new Discord.Client({ intents: [Intents.FLAGS.GUILDS] });
require('discord-reply');
const fs = require('fs');
const ms = require('ms')
const config = require("../config.json");
const ginfo = require("../guild.json");
const BOTTOKEN = (config.bottoken);
const OWNERID = (config.botownerid);
const PREFIX = (config.prefix);
const STATUS = (config.status);
const GUILDID = (ginfo.guildID);
const MODID = (ginfo.moderatorID);
const LOGID = (ginfo.logChannelID);
module.exports = {
name: 'mute',
description: 'This command mutes a member.',
execute(message, args) {
if (message.member.permissions.has("MANAGE_MESSAGES") || message.author.id === (config.botownerid)) {
const target = message.mentions.users.first();
if (target) {
let mainRole = message.guild.roles.cache.find(role => role.name === 'Member');
let muteRole = message.guild.roles.cache.find(role => role.name === 'Muted');
let MemberTarget = message.guild.members.cache.get(target.id);
if (!args[1]) {
MemberTarget.roles.remove(mainRole.id);
MemberTarget.roles.add(muteRole.id);
const muteEmbed = new MessageEmbed()
.setColor('RANDOM')
.setTitle('Member Muted')
.setDescription(`**User:** <@${MemberTarget.id}>\n**Moderator:** <@${message.author.id}>`)
.setTimestamp()
.setFooter(`Muted by ${message.author.tag}`, `${message.author.avatarURL()}`)
message.lineReplyNoMention(muteEmbed);
channel = client.channels.cache.get(LOGID);
const logEmbed = new MessageEmbed()
.setColor('RANDOM')
.setTitle('Member Muted')
.setDescription(`**User:** <@${MemberTarget.id}>\n**Moderator:** <@${message.author.id}>`)
.setTimestamp()
.setFooter(`Muted by ${message.author.tag}`, `${message.author.avatarURL()}`)
channel.send(logEmbed);
return
}
MemberTarget.roles.remove(mainRole.id);
MemberTarget.roles.add(muteRole.id);
const muteEmbed = new MessageEmbed()
.setColor('RANDOM')
.setTitle('Member Muted')
.setDescription(`**User:** <@${MemberTarget.id}>\n**Moderator:** <@${message.author.id}>\n**Duration:** ${ms(ms(args[1]))}`)
.setTimestamp()
.setFooter(`Muted by ${message.author.tag}`, `${message.author.avatarURL()}`)
message.lineReplyNoMention(muteEmbed);
channel = client.channels.cache.get(LOGID);
const logEmbed = new MessageEmbed()
.setColor('RANDOM')
.setTitle('Member Muted')
.setDescription(`**User:** <@${MemberTarget.id}>\n**Moderator:** <@${message.author.id}>\n**Duration:** ${ms(ms(args[1]))}`)
.setTimestamp()
.setFooter(`Muted by ${message.author.tag}`, `${message.author.avatarURL()}`)
channel.send(logEmbed);
setTimeout(function(){
MemberTarget.roles.add(mainRole.id);
MemberTarget.roles.remove(muteRole.id);
}, ms(args[1]));
} else {
const cmuteEmbed = new MessageEmbed()
.setColor('#F04848')
.setDescription(`**${message.author.tag}**, you cannot mute that member.\nThe user may not exist or the bot may not have permission.`)
message.lineReply(cmuteEmbed)
}
} else {
const nopermEmbed = new MessageEmbed()
.setColor('#F04848')
.setDescription(`**${message.author.tag}**, you are missing the "**MANAGE_MESSAGES**" permission.`)
message.lineReply(nopermEmbed)
}
}
};
我的所有审核命令(ban、unban、mute、unmute、kick、clear)都出现了这个问题。我认为问题在于没有定义客户端,但我不能 100% 确定为什么会这样,因为我已经在代码的最顶部定义了它。 无论如何,让我知道是否有人可以提供帮助。谢谢。
【问题讨论】:
标签: node.js discord.js