Создание бота Discord для новичка

#javascript #discord #discord.io

#javascript #Discord #discord.io

Вопрос:

Я никогда раньше не кодировал бота Discord, но знаком с Javascript, поэтому решил попробовать. Я использовал файлы для начинающих с этого сайта Digital Trends, но столкнулся с некоторыми проблемами.

У меня бот запущен на моем сервере, и базовая команда заменена с «!» на «?», а включенная команда «?ping» возвращает ожидаемый ответ «Pong!»

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

Что я пытаюсь выяснить, так это как использовать пользовательскую команду:

?gs "Video Game Title" "Platform"

И заставить бота удалить команду и перепостить как:

@пользователь предложил название видеоигры для платформы

А также добавление смайликов-реакций «👍» и «👎», чтобы позволить другим пользователям голосовать.

Я не прошу кого-либо делать это за меня, а просто помочь указать мне правильное направление того, как закодировать это с учетом Discord, используя JS (если возможно)

Вот мой текущий «bot.js «код:

 var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, {
    colorize: true
});
logger.level = 'debug';
// Initialize Discord Bot
var bot = new Discord.Client({
   token: auth.token,
   autorun: true
});
bot.on('ready', function (evt) {
    logger.info('Connected');
    logger.info('Logged in as: ');
    logger.info(bot.username   ' - ('   bot.id   ')');
});
bot.on('message', function (user, userID, channelID, message, evt) {
    // Our bot needs to know if it will execute a command
    // It will listen for messages that will start with `!`
    if (message.substring(0, 1) == '?') {
        var args = message.substring(1).split(' ');
        var cmd = args[0];

        args = args.splice(1);
        switch(cmd) {
            // !ping
            case 'ping':
                bot.sendMessage({
                    to: channelID,
                    message: 'Pong!'
                });
            break;
            // Just add any case commands if you want to..
         }
     }
});
  

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

1. первым шагом было бы проанализировать ваше сообщение, чтобы получить нужные значения (название вашей игры и вашу платформу) … и добавить команду gs в ваш регистр переключения. Ну, в принципе, по крайней мере, попробуйте, нет? это всего лишь базовый код

2. Это правда, это вся основа — все, что я пробовал, сломало ее. Я либо недостаточно хорошо читаю «Практические» статьи, либо мои знания JS настолько упали, что я просто больше не могу это понимать.

3. У меня нет опыта в кодировании бота Discord, но я вижу args = args.splice(1) перед switch утверждением. Вы должны зарегистрировать эту переменную, чтобы увидеть, что внутри.

4. тогда вам следует ознакомиться с некоторыми манипуляциями со строками в JS, потому что в основном это все. У вас есть полное сообщение, вам нужно проанализировать его, чтобы получить свои переменные, которые вы будете использовать позже. Это будет ваш первый шаг. После этого, ну, это связано с кодом бота discord, и у меня действительно нет никакого опыта

Ответ №1:

 args = args.splice(1);
  

Эта строка неверна, args (будучи строкой) не имеет .splice() метода. (Я часто .slice() и .split() путаюсь, так что со мной это тоже часто случается!)

Вместо этого используйте:

 args = args.split(" ").slice(1);