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

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

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

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

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

?gs "Video Game Title" "Platform"

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

@user suggested Video Game Title for 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..
         }
     }
});

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

Dimitri Bosteels 06.03.2019 17:00

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

Clay_Cauley 06.03.2019 17:05

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

Kévin Bibollet 06.03.2019 17:05

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

Dimitri Bosteels 06.03.2019 17:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
165
1

Ответы 1

args = args.splice(1);

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

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

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

Другие вопросы по теме