Bot应该说/ userinfo @name并显示用户信息,但不这样做

时间:2019-03-05 01:21:27

标签: bots discord

当有人加入我的服务器时,我的机器人应该说/ userinfo @name,它会向我提供详细信息。机器人说了这一点,但对第二个命令没有反应,请帮助

bot.on('ready', () => console.log("online!"));

bot.on("guildMemberAdd", (member) => {
    let guild = member.guild;
    let memberTag = member.user.tag;
    if(guild.systemChannel){
        guild.systemChannel.send("/userinfo" +"<@" + member.id + ">" )
    }

});




bot.on('message', async (msg) => {

if (msg.content.startsWith(prefix + "userinfo")) {
    let member = msg.mentions.users.first() || msg.author;
    let userembed = new Discord.RichEmbed()
        .setColor(msg.guild.member(member).highestRole.color)
        .setThumbnail(member.displayAvatarURL)
        
        .setTitle(`Here is ${member.username}'s info.`)
        .addField(`Name:`, member.username, true)
        .addField(`Id:`, member.id, true)
        .addField(`Bot:`, member.bot ? "Yes" : "No", true)
        .addField("Game:", msg.guild.member(member).presence.game ? msg.guild.member(member).presence.game.name : "Not Playing", true)
        .addField("Nickname:", msg.guild.member(member).nickname ? msg.guild.member(member).nickname : "None", true )
        .addField("Last Messsage:", member.lastMessage, true)
        .addField(`Roles:`, msg.guild.member(member).roles.map(s => s).join(" | "), true)
        .addField("Created At:", member.createdAt, true)
        .addField("JoinedAt:", msg.guild.member(member).joinedAt, true)
        msg.channel.send(userembed);

1 个答案:

答案 0 :(得分:0)

它没有发送,因为.systemChannel是只读的docs。 D.js中的.defaultChannel也已被弃用,因此您可以使用类似member.guild.channels.find(channel => channel.name === "channel-name");的名称,但是如果没有使用该名称的通道,它将不会发送该名称。尽管有一些解决方法可以找到“默认通道”,该通道基本上可以确定机器人可以向其发送消息的第一个通道,但是显然,如果它具有管理员权限,则它可能位于您不希望使用的通道中发送消息,因此请注意这一点,它还将检查是否有一个称为“常规”的频道,并使用该频道,您可以找到本指南here