[英]Please help me with my discord.js userinfo command
我是 Stack Overflow 和 discord.js 的新手
所以我試圖在 discord.js 中創建一個 userinfo 命令,但我在控制台中不斷收到此錯誤:
const userFlags = (await member.user.fetchFlags()).toArray(); SyntaxError:意外的標識符
( member
用^^^突出顯示)。 您在代碼后面也有錯誤。
這是代碼:
module.exports = {
name: "userinfo",
description: "Userinfo of mentioned user/id or if no one mentioned then yours",
execute(client, msg, args, guild) {
const embed = new MessageEmbed()
const moment = require('moment');
const Discord = require('discord.js');
const member = msg.mentions.members.first() || msg.guild.members.cache.get(args[0]) || msg.member;
if (!member)
return msg.channel.send('Please mention the user for the userinfo..');
const userFlags = (await member.user.fetchFlags()).toArray();
const activities = [];
let customStatus;
for (const activity of member.presence.activities.values()) {
switch (activity.type) {
case 'PLAYING':
activities.push(`Playing **${activity.name}**`);
break;
case 'LISTENING':
if (member.user.bot) activities.push(`Listening to **${activity.name}**`);
else activities.push(`Listening to **${activity.details}** by **${activity.state}**`);
break;
case 'WATCHING':
activities.push(`Watching **${activity.name}**`);
break;
case 'STREAMING':
activities.push(`Streaming **${activity.name}**`);
break;
case 'CUSTOM_STATUS':
customStatus = activity.state;
break;
}
}
const uiembed = new Discord.MessageEmbed()
.setTitle(`${member.displayName}'s Information`)
.setThumbnail(member.user.displayAvatarURL({ dynamic: true }))
.addField('User', member, true)
.addField('Discriminator', `\`#${member.user.discriminator}\``, true)
.addField('ID', `\`${member.id}\``, true)
.addField('Status', statuses[member.presence.status], true)
.addField('Bot', `\`${member.user.bot}\``, true)
.addField('Color Role', member.roles.color || '`None`', true)
.addField('Highest Role', member.roles.highest, true)
.addField('Joined server on', `\`${moment(member.joinedAt).format('MMM DD YYYY')}\``, true)
.addField('Joined Discord on', `\`${moment(member.user.createdAt).format('MMM DD YYYY')}\``, true)
.setFooter(msg.member.displayName, msg.author.displayAvatarURL({ dynamic: true }))
.setTimestamp()
.setColor(member.displayHexColor);
if (activities.length > 0) uiembed.setDescription(activities.join('\n'));
if (customStatus) uiembed.spliceFields(0, 0, { name: 'Custom Status', value: customStatus});
if (userFlags.length > 0) uiembed.addField('Badges', userFlags.map(flag => flags[flag]).join('\n'));
msg.channel.send(uiembed);
}
}
我在控制台中收到此錯誤:
const userFlags = (await member.user.fetchFlags()).toArray();
^^^^^^
SyntaxError: Unexpected identifier
at wrapSafe (internal/modules/cjs/loader.js:979:16)
at Module._compile (internal/modules/cjs/loader.js:1027:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/Users/victor/Desktop/BIT bot/main.js:11:19)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
像這樣使用await
關鍵字時,您需要用括號括住您正在await
的任何內容
const userFlags = ( await (member.user.fetchFlags()) ).toArray()
另一個更簡潔的選擇是為此創建另一個變量
const rawFlags = await member.user.fetchFlags()
const userFlags = rawFlags.toArray()
好的,所以這里有幾個問題。
更改此行execute(client, msg, args, guild) {
execute: async(client, msg, args, guild) => {
我不鼓勵任何人使用msg.mentions.members.first() || msg.guild.members.cache.get(args[0]) || msg.member;
msg.mentions.members.first() || msg.guild.members.cache.get(args[0]) || msg.member;
盡管它更容易編寫。 因為如果它想要的那個是undefined
的,它只回退到下一個,它具有 Discord.js 的性質,它打算返回一個 object,即使沒有提到。 相反,使用三元運算符或 if 語句使用msg.mentions.members.first().id
。 這樣可以確保它始終返回已提到的人。 之后,您可以使用await guild.members.fetch(/* The mentioned user's ID */)
查找成員。
這就是我所知道的,我希望我的解決方案對你有幫助,如果它仍然不適合你,請告訴我。
編輯:我剛剛意識到對於這個用例,三元運算符沒有真正的目的。 我個人會使用 if 語句,因為直接編寫它更容易,然后浪費時間定義回退和三元管理系統。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.