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