Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2018, 14:08
Новичок на форуме
Отправить личное сообщение для jsnoob3000 Посмотреть профиль Найти все сообщения от jsnoob3000
 
Регистрация: 01.05.2018
Сообщений: 1

Проблема с командами моего бота для Discord
Всем привет! Я только вчера познакомился в javascript, т.к. мне понадобилось создать собственного бота для Discord. Мои познания в этом языке программирования крайне скудные (и вообще я гуманитарий), поэтому я смог создать лишь команды, после которых бот отправляет определённые сообщения или добавляет в чат приглашение на сервер. Я пытался создать команды, после которых бот отправляет изображение, гиф, эмодзи или различные вариации текста, а не одинаковый текст (например, игра 8ball, в которой бот будет давать советы), а также команду, после которой бот повторяет сообщение пользователя (без команды).
Возникли следующие проблемы: после добавления команд с отправкой изображения - бот просто не запускается, после добавления команд с эмодзи - бот отправляет их текстом (:thinking: - пример, но если самому ввести это в чат, отправится эмодзи), после других команд бот также не запускается)

Такой код я оставил в итоге:
const Discord = require('discord.js');

const client = new Discord.Client();

var prefix = 'sh!'

client.on("message",(message) => 
{   
    if(message.content == "sh!inv")
    {
        message.channel.createInvite({temporary : true})
       .then(inv =>message.channel.sendMessage (`https://discord.gg/${inv.code}`));                    
    }
});

client.on('message', message => {
    if(message.author === client.user) return;
    if(message.content.startsWith(prefix + 'текст')) {
        message.channel.sendMessage('отправляемый текст');
     }
});

client.login('тут токен бота');


(Убрал похожие команды, т.к. разновидностей команд лишь две)

Сами вопросы:
Как добавить вариативность ответа бота?
Как заставить бота отправлять изображения?
Как заставить бота повторить сообщение пользователя без повторения команды?
Как заставить бота отправлять эмодзи как эмодзи, а не как текст?
+ буду очень рад советам, многое читал на англоязычных форумах, но почти везде ботов делают на питоне, а я к такому пока не готов)
Ответить с цитированием
  #2 (permalink)  
Старый 02.05.2018, 21:01
Новичок на форуме
Посмотреть профиль Найти все сообщения от KenClaron
 
Регистрация: 02.05.2018
Сообщений: 1

Ответы на вопросы
1. Вариативность ответов бота:
let answers = ["да", "нет", "возможно", "конечно"]; //массив ответов
let rand = Math.floor(Math.random()*answers.length); //получаем случайное число от 0 до `кол-ва ответов`
message.channel.send(answers[rand]);

2.Отправить изображение:
а) если это локальный файл:
message.channel.send("сообщение(можно отпустить)", {
        files:[{
          attachment: "nameImage.png",
          name: "newname.png"
        }]
      });

б) если этот файл находится в интернете:
message.channel.send("сообщение(можно отпустить)", {
  files: ['https://cdn.discordapp.com/icons/222078108977594368/6e1019b3179d71046e463a75915e7244.png?size=2048']
})

3. Повторно отправлять сообщение каждые 1 секунду
if(message.content == "sh!repeat"){
      setInterval(function() {
        message.channel.send("go-go");
      }, 1000)  // время в миллисекундах // 1000 == 1секунда
    }

4. Насчет эмодзи, попробуй использовать двойные кавычки при отправке эмодзи, у меня работает
message.channel.send(":thinking:");

Рекомендую в помощь http://discord.js.org
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Верстка для iPad - проблема с полосами прокрутки SARD Opera, Safari и др. 3 05.09.2011 09:35
Проблема с выборкой нужного элемента для исполнения frolvict jQuery 3 04.08.2011 00:14
Оцените супер дизайн моего шаблона для сайта. Каупервудик Ваши сайты и скрипты 3 27.02.2011 22:08
проблема с ActiveXObject для интернет эксплорера lavr AJAX и COMET 2 05.07.2010 23:49
Проблема с меню для кнопки в Гриде progi2007 ExtJS 0 03.08.2009 14:16