#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);