#javascript #node.js #discord
#javascript #node.js #Discord
Вопрос:
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ /);
const command = args.shift().toLowerCase();
let member = message.guild.members;
if (command === 'ping') {
message.channel.send(`${srv.getServerName().then()}`)
}
});
У меня есть такая кодировка, когда я пишу ping из канала, он должен писать servername, но он пишет object promise. Как я могу ее решить?
Извините, мой английский не очень хорош, я использую Google translate.
Ответ №1:
Кажется srv.getServerName()
, это обещание, и вы отправляете его вместо разрешенного значения на свой канал. Вот почему ты видишь [object Promise]
.
Сначала вы можете получить имя сервера и отправить сообщение из его .then()
метода:
if (command === 'ping') {
srv
.getServerName()
.then(name => message.channel.send(name))
}
Или вы можете сделать обратный вызов async
функцией и await
ответом перед его отправкой:
client.on('message', async (message) => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ /);
const command = args.shift().toLowerCase();
const member = message.guild.members;
if (command === 'ping') {
const serverName = await srv.getServerName();
const embed = new MessageEmbed()
.setTitle('Embed title')
.setDescription(`This is the "${serverName}" server`);
message.channel.send(embed);
}
});