Я никогда раньше не программировал 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..
}
}
});
Это правда, это вся основа — все, что я пробовал, ломало ее. Я либо недостаточно хорошо читаю статьи с практическими рекомендациями, либо мои знания JS настолько ухудшились, что я просто не могу их понять.
У меня нет опыта кодирования бота Discord, но я вижу args = args.splice(1) перед утверждением switch. Вы должны зарегистрировать эту переменную, чтобы увидеть, что внутри.
тогда вы должны прочитать некоторые манипуляции со строками в JS, потому что в основном это все. У вас есть полное сообщение, вам нужно проанализировать его, чтобы получить свои переменные, которые вы будете использовать позже. Это будет вашим первым шагом. После этого, ну, это связано с кодом бота раздора, и у меня действительно нет никакого опыта.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


args = args.splice(1);
Эта строка неверна, args (будучи строкой) не имеет метода .splice(). (Я часто путаю .slice() и .split(), так что со мной это тоже часто случается!)
Вместо этого используйте:
args = args.split(" ").slice(1);
Хорошо, проанализируйте ваше сообщение, чтобы получить нужные значения (название вашей игры и вашу платформу), это будет первым шагом... и добавление команды gs в ваш случай переключения. Ну в принципе хотя бы попробовать нет? это просто базовый код