【问题标题】:discord.js v12 | TypeError: Cannot read property 'send' of undefineddiscord.js v12 | TypeError:无法读取未定义的属性“发送”
【发布时间】:2021-04-17 19:18:46
【问题描述】:

这是我的禁令命令的完整代码。值得注意的是,我也在使用 Discord.JS Commando,我一直在努力解决这个错误,但实际上无法弄清楚为什么我得到它一切看起来都很好,除非我使用了不推荐使用的函数。真的很感谢有人能帮我解决这个问题

const { Command } = require('discord.js-commando');
const { MessageEmbed } = require('discord.js');
const db = require('quick.db');

module.exports = class banCommand extends Command {
  constructor(client) {
      super(client, {
        name: 'ban',
        memberName: "ban",
        group: 'moderation',
        guildOnly: true,
        userPermissions: ['BAN_MEMBERS'],
        description: 'Bans the mentioned user from the server with additional modlog info.'
      });

      }
    async run(message, args) {
            if (!args[0]) return message.channel.send('**Please Provide A User To Ban!**')

            let banMember = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(r => r.user.username.toLowerCase() === args[0].toLocaleLowerCase()) || message.guild.members.cache.find(ro => ro.displayName.toLowerCase() === args[0].toLocaleLowerCase());
            if (!banMember) return message.channel.send('**User Is Not In The Guild**');
            if (banMember === message.member) return message.channel.send('**You Cannot Ban Yourself**')

            var reason = args.slice(1).join(' ');

            if (!banMember.bannable) return message.channel.send('**Cant Kick That User**')
            banMember.send(`**Hello, You Have Been Banned From ${message.guild.name} for - ${reason || 'No Reason'}**`).then(() =>
                message.guild.members.ban(banMember, { days: 7, reason: reason })).catch(() => null)
                message.guild.members.ban(banMember, { days: 7, reason: reason })
            if (reason) {
            var sembed = new MessageEmbed()
                .setColor('GREEN')
                .setAuthor(message.guild.name, message.guild.iconURL())
                .setDescription(`**${banMember.user.username}** has been banned for ${reason}`)
            message.channel.send(sembed)
            } else {
                var sembed2 = new MessageEmbed()
                .setColor('GREEN')
                .setAuthor(message.guild.name, message.guild.iconURL())
                .setDescription(`**${banMember.user.username}** has been banned`)
            message.channel.send(sembed2)
            }
            let channel = db.fetch(`modlog_${message.guild.id}`)
            if (channel == null) return;

            if (!channel) return;

            const embed = new MessageEmbed()
                .setAuthor(`${message.guild.name} Modlogs`, message.guild.iconURL())
                .setColor('#ff0000')
                .setThumbnail(banMember.user.displayAvatarURL({ dynamic: true }))
                .setFooter(message.guild.name, message.guild.iconURL())
                .addField('**Moderation**', 'ban')
                .addField('**Banned**', banMember.user.username)
                .addField('**ID**', `${banMember.id}`)
                .addField('**Banned By**', message.author.username)
                .addField('**Reason**', `${reason || '**No Reason**'}`)
                .addField('**Date**', message.createdAt.toLocaleString())
                .setTimestamp();

            var sChannel = message.guild.channels.cache.get(channel)
            if (!sChannel) return;
            sChannel.send(embed)
        }
    };

【问题讨论】:

  • 你知道是哪个.send()吗?
  • 除了@Pentium1080Ti 之外,我没有其他来自错误的信息
  • 你能发布完整的错误吗?
  • 这是我使用命令的唯一错误,discord commando 在聊天中发布了错误,它没有打印到控制台
  • .catch(e =>{}); 添加到您的.send()s,然后您可以登录e 以获得完整的跟踪

标签: discord.js typeerror


【解决方案1】:

您收到TypeError: args.slice(...).join is not a function 错误的原因是因为slice 方法创建了一个新的切片数据数组,因此不能join(' ') 因为没有空间可以加入。 (即它不是一个字符串)

你要找的是args.slice(1).toString().replace(",", " ")

这会删除 args 数组对象的第二部分,然后将其转换为字符串,然后删除字符串中的逗号并用空格替换它们。

【讨论】:

  • 他解决了我的问题,谢谢!快速提问,我似乎遇到了与以前相同的TypeError: Cannot read property 'send' of undefined 问题,你知道如何解决这个问题吗?我在使用 .Catch 修复了这个命令时遇到了同样的问题,我试图复制这个想法,但在其他命令中没有用。
  • 它是否说明错误是在哪里引发的?例如,通常以 file.js - 34:45 的形式 - 只是因为您的代码中有太多 send
  • 不,这不是我如此困惑的原因
猜你喜欢
  • 2021-04-12
  • 2021-06-27
  • 2021-04-01
  • 2020-06-17
  • 2021-11-02
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 2021-04-28
相关资源
最近更新 更多