Как заставить бота discord повторить определенную часть сообщения пользователя

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Я пытаюсь создать бота discord, который отправляет сообщение, а затем повторяет код, который дает пользователь. Например:

Пользователь: !play <code>

Бот: @everyone a new game has been started with the code <code>


Я также хочу, чтобы он запоминал эту переменную до ее сброса, чтобы это было возможно:

Пользователь: !code

Bot: the current game code is <code>

Возможно ли это сделать, и если да, то как? Я не могу найти ничего, что показывало бы, что я ищу в простом скрипте .js

Вот что у меня есть на данный момент:

 client.on('message', (msg) => {
 if (msg.content === '!play') {
  msg.reply('@everyone A new game has been started with the code');
 }
});

client.on('message', (msg) => {
 if (msg.content === '!code') {
  msg.reply('The current game code is');
 }
});
  

Комментарии:

1. Вам нужно будет настроить аргументы, взять 2-й элемент из массива args и сохранить его как переменную

Ответ №1:

о, и также это выдает мне ошибку типа: msg.StartsWith не является функцией

Использовать message.content.startsWith()

Это может сработать для !play, однако я хочу, чтобы !code отвечал на код, который уже был определен в !play

Верно, чтобы получить аргументы сообщения без команды, это

 let args = message
.content // We need the content of the message
.split(' ') // Then we creates an array with the message separated with a space.
.slice(1) // We remove the command from the array
  

затем вы можете использовать аргументы по своему усмотрению.

 message.channel.send(args.join(' ')) // We join with a space to transform the array with a string
  

Ответ №2:

Вы могли бы сделать это следующим образом:

 var code = '';

client.on('message', (msg) => {
 if (msg.content.startsWith('!play ')) {
  code = msg.content.substr(6); // Remove first 6 characters of message
  msg.reply(`@everyone A new game has been started with the code ${code}`);
 }
 if (msg.content.startsWith('!code ') amp;amp; code.length > 0) {
  msg.reply(`The current game code is ${code}`);
 }
});
  

Комментарии:

1. Это может сработать для !play, однако я хочу, чтобы !code отвечал на код, который уже был определен в !play.

2. о, и также это выдает мне ошибку типа: msg.StartsWith не является функцией

3. @fcpihtr извините, исправил!