Указание, на какой канал отправлять чат с диска-бота (команда say-channel) - PullRequest
0 голосов
/ 30 августа 2018

Эта функция есть в GLaDOS боте, Connor RK800 боте и TypicalBot .

Часто команда выглядит так:

! Скажи # общий черт

И текст, через бота, появится в этом канале.

Я бы хотел добавить это в свой бот, если это возможно!

У меня есть простой код для команды say-delete. Что я должен буду добавить, и что я должен забрать?

      if (command === "say") {
  const sayMessage = args.join(" ");

  message.delete().catch(O_o => {
    // Catch error
  });
  message.channel.send(sayMessage);
}

Спасибо! Я действительно ценю это.

1 Ответ

0 голосов
/ 30 августа 2018

Во-первых, вы хотели бы изменить код для определения аргументов в этом случае на const channel = args.shift();, который будет возвращать первый элемент в массиве args [].

Затем вы можете определить канал, на который пользователь хочет отправить сообщение, с помощью message.guild.channels[channel].send(sayMessage); (я думаю).

Все вместе, ваш код будет:

if(command === "say") {

   const channel = args.shift();
   const sayMessage = args.join(" ");

   message.delete().catch(O_o=>{});  

   message.guild.channels[channel].send(sayMessage);

}

Поскольку я не могу проверить это прямо сейчас, я не знаю наверняка, сработает ли это, но это стоит попробовать! Если ты хочешь, я могу проверить это для тебя, как только смогу.

EDIT: Я протестировал и исправил код, надеюсь, комментарии, которые я написал, достаточно объяснительны.

const channel = args.shift().slice(2,-1); // this is due to how channel mentions work in discord (they are sent to clients as <#462650628376625169>, this cuts off the first <# and the finishing >)
const sayMessage = args.join(` `);

message.delete(); // you may want to add a catch() here, i didn't because my bot requires permissions to be added to a server
client.channels.get(channel).send(sayMessage); // client here may need to be replaced with bot, or app, or whatever you're using - client.channels returns a collection, which we use get() to find an item in

Просто чтобы прояснить, этот код должен находиться внутри вашего блока if (command === "say").

...