Пытаясь создать Discord Bot, я столкнулся с еще одной проблемой. Я пытаюсь найти способ, чтобы владелец заставил бота сказать что-то в разделе объявлений для меня, чтобы это не отображалось как мое имя.

Я пробовал интерфейс readline (хотя я не знаю, правильно ли я это сделал) и пробовал разные способы создания переменной (const, var).

if(message.member.roles.find(r => r.name === "Owner")){
  return message.reply("What would you like to say?")
  const dm = message.content;
  return message.reply("$dm")

Я хочу, чтобы бот отвечал на все, что я говорю. Итак, если я введу Сервер скоро выйдет из строя!, то бот должен ответить мне (в данном случае).

0
zEooT 19 Окт 2019 в 23:03

1 ответ

Когда вы вызываете return, вы завершаете выполнение функции, которую пишете.

В этом случае,

if(message.member.roles.find(r => r.name === "Owner")){
  return message.reply("What would you like to say?") // the current function stops
  const dm = message.content; // this line never executes
  return message.reply("$dm")

Вам придется дождаться ответа от пользователя, который, как я полагаю, отвечает на какую-то команду.

if (message.member.roles.find(r => r.name === "Owner")) {
    await message.reply("What would you like to say?"); // Send the request
    // Wait for the person who sent the original message to send another message
    let userMessages = await message.channel
        .awaitMessages(m => m.id === message.member.id, { max: 1 }); 
    let userMessage = userMessages.first()
    // Reply with the message they sent
    return message.member.reply(userMessage.content);
0
Rubydesic 19 Окт 2019 в 23:15
В консоли написано SyntaxError: await is only valid in async function
 – 
zEooT
22 Окт 2019 в 01:59
Ну, очевидно, вам придется сделать свою функцию асинхронной, тогда
 – 
Rubydesic
22 Окт 2019 в 03:25