繁体   English   中英

discord.js 错误“未定义通道”

[英]discord.js error "channel is not defined"

所以我做了一个静音命令,它创建一个静音角色并将其提供给提到的用户,目前我收到一个错误:通道未定义,我不知道如何解决这个错误,我需要帮助

module.exports = class MuteCommand extends BaseCommand {
  constructor() {
    super('mute', 'moderation', []);
  }

  async run(client, message, args) {
    if (!message.member.hasPermission("MUTE_MEMBERS")) return message.channel.send("You do not have Permission to use this command.");
    if (!message.guild.me.hasPermission('MANAGE_ROLES')) return message.channel.send("I do not have Permission to mute members.");

    let reason = args.slice(1).join(' ');
    let roleName = 'Muted';
let muteRole = message.guild.roles.cache.find(x => x.name === roleName);
if (typeof muteRole === undefined) {
  guild.roles.create({ data: { name: 'Muted', permissions: ['SEND_MESSAGES', 'ADD_REACTIONS'] } });
} else {
}   
    muteRole = message.guild.roles.cache.find(x => x.name === roleName);
    channel.updateOverwrite(channel.guild.roles.muteRole, { SEND_MESSAGES: false });
    const mentionedMember = message.mentions.member.first() || message.guild.members.cache.get(args[0]);
    const muteEmbed = new Discord.MessageEmbed()
     .setTitle('You have been Muted in '+message.guild.name)
     .setDescription('Reason for Mute: '+reason)
     .setColor('#6DCE75')
     .setTimestamp()
     .setFooter(client.user.tag, client.user.displayAvatarURL())
     .setImage(message.mentionedMember.displayAvatarURL());

     if (!args[0]) return message.channel.send('You must mention a user to mute.');
     if (!mentionedMember) return message.channel.send('The user mentioned is not in the server.');
     if (mentionedMember.user.id == message.author.id) return message.channel.send('You cannot mute yourself.');
     if (mentionedMember.user.id == client.user.id) return message.channel.send('You cannot mute me smh.');
     if (!reason) reason = 'No reason given.';
     if (mentionedMember.roles.cache.has(muteRole.id)) return message.channel.send('This user has already been muted.');
     if (message.member.roles.highest.position <= mentionedMember.roles.highest.position) return message.chanel.send('You cannot mute someone whos role is higher and/or the same as yours');

     await mentionedMember.send(muteEmbed).catch(err => console.log(err));
     await mentionedMember.roles.add(muteRole.id).catch(err => console.log(err).then(message.channel.send('There was an issue while muting the mentioned Member')));

  }
}

我相信这段代码中的错误可能比我想象的还要多,因为我对编码还很陌生。

您使用了“通道”而没有声明它。 因此,它是未定义的。

检查你的行“channel.updateOverwrite(channel.guild.roles.muteRole, { SEND_MESSAGES: false });”

const { Client, Intents } = require('discord.js')
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
client.on('ready', () => {
 console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.channel.send('pong');
  });
});

请参考以下链接 Discord.JS 文档: https://github.com/discordjs/discord.js

堆栈溢出答案: Discord.js 向特定通道发送消息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM