Comments 21
Несколько текстовых каналов. Одни люди имеют доступ в один канал, другие — в другой. Пользователь в канале с помощью бота отправляет в другой канал сообщение, содержащее текст, видео и картинку. Сам пользователь в канал, куда отправляется такое сообщение, доступа не имеет. Возможно реализовать такой функционал?
0
Добрый вечер, Techniker753
Да, разумеется, такой функционал реализовать возможно, ведь контактирует с каналом не сам пользователь, а бот.
Используйте данный код:
Да, разумеется, такой функционал реализовать возможно, ведь контактирует с каналом не сам пользователь, а бот.
Используйте данный код:
robot.channels.cache.get('ID_канала').send("Сообщение");
0
Большое спасибо! Очень понятное и полное руководство! Жду продолжение!
0
Рад, что вам понравилось, SergioTy!
0
Автору — спасибо за проделанный труд!
ИМХО, напрягает это засилье использования node везде, где только можно. Я вообще не считаю идею использовать js для бекенда хорошей, но это очень холиварная тема, поэтому не стоит начинать холивар тут.
ИМХО, напрягает это засилье использования node везде, где только можно. Я вообще не считаю идею использовать js для бекенда хорошей, но это очень холиварная тема, поэтому не стоит начинать холивар тут.
0
как тяжело на js и как легко на Python. я сам пишу на питоне но лучше начать учить Rust
-1
Добрый вечер, helish_88
Не сказал бы.
Такое впечатление появляется лишь из-за того, что я показал вариант с большим кодом для обработки команд. Существуют способы, намного компактнее показанного.
Не сказал бы.
Такое впечатление появляется лишь из-за того, что я показал вариант с большим кодом для обработки команд. Существуют способы, намного компактнее показанного.
0
да не, я когда хотел учить какой-то язык что бы писать ботов для дискорд я начал с discord js, Потом понял что ничего не понял и начал учить питон, мне он понравился.
0
Как же тяжело с мухоловкой и легко с веером. я сам обычно пользуюсь веером, но лучше купить лопату.
Все три инструмента находятся в практически противоположных областях, как вообще между ними можно выбирать?
Все три инструмента находятся в практически противоположных областях, как вообще между ними можно выбирать?
+1
Простейший парсер команд:
Насчет определения функции не уверен, вроде работало. ИМХО, это гораздо проще и возможно быстрее.
Также HashMap или что там в JS, имеет сложность O(1) для get запроса, когда тупой перебор — O(n).
Также:
«Math.floor(Math.random() * 4);» — может и 0 вернуть, т.к.
1. Math.floor(0.9999) == 0
2. 0.9 / 4 = 0.225
3. Math.random() насколько я помню, возвращает от 0 до 1.
Поэтому есть ~22%-25% шанс, что будет 0.
bot.on('message', async msg => {
if (msg.author.bot) return;
if (!msg.content.startsWith(BOT_PREFIX)) return;
let args = msg.content.split(/\s+/g);
let cmd = args.shift();
...
});
Насчет определения функции не уверен, вроде работало. ИМХО, это гораздо проще и возможно быстрее.
Также HashMap или что там в JS, имеет сложность O(1) для get запроса, когда тупой перебор — O(n).
Также:
«Math.floor(Math.random() * 4);» — может и 0 вернуть, т.к.
1. Math.floor(0.9999) == 0
2. 0.9 / 4 = 0.225
3. Math.random() насколько я помню, возвращает от 0 до 1.
Поэтому есть ~22%-25% шанс, что будет 0.
0
Добрый вечер, 1keda
Я осведомлен об этой особенности и даже хотел написать об этом в статье, но так как изначально она была рассчитана на новичков, я посчитал нужным не загружать никого лишней информацией.
Math.random() и Math.floor() невероятно гибки, и их можно полностью настроить под себя.
Возможно, я разберу это подробно в последующих статьях, но всё же, не будем забывать, что это основы Javascript, описанные в любом учебнике.
Я осведомлен об этой особенности и даже хотел написать об этом в статье, но так как изначально она была рассчитана на новичков, я посчитал нужным не загружать никого лишней информацией.
Math.random() и Math.floor() невероятно гибки, и их можно полностью настроить под себя.
Возможно, я разберу это подробно в последующих статьях, но всё же, не будем забывать, что это основы Javascript, описанные в любом учебнике.
-1
Здравствуйте, да, вполне возможно. Может я через строчку читал, или не написано было, но знать теперь буду. А еще было бы приятно увидеть в следующих статьях увидеть про оптимизацию, настройку БД и использованию ORM / самописного движка. Ну и еще какие-нибудь прикольные фишки как экономика/предметы/магазин и красивый профиль картинкой (пример из бота MEE6 ниже).
Помню, как написание простейшего PHP скрипта на коленке для UPDATE/SELECT запросов в БД (скрипт висел на сайте и был параметр в GET запросе а-ля токен), ускорило ну… Раз в 50, может и на все два порядка. Был даже момент когда бот ответил через 9 часов ±, а после максимум минут через 5. Ибо 2,000 серверов и около 100,000 юзеров, ну и 0 оптимизации видать (я был WEB кодером, что там было — я не имею понятия).
Помню, как написание простейшего PHP скрипта на коленке для UPDATE/SELECT запросов в БД (скрипт висел на сайте и был параметр в GET запросе а-ля токен), ускорило ну… Раз в 50, может и на все два порядка. Был даже момент когда бот ответил через 9 часов ±, а после максимум минут через 5. Ибо 2,000 серверов и около 100,000 юзеров, ну и 0 оптимизации видать (я был WEB кодером, что там было — я не имею понятия).
0
Статья интересная, но примеры кода тяжело читать.
Вы использовали линтер?
Где-то const/let, а где-то var.
В одном месте увидел async/await и одновременно Promise.then.
В колбэках где-то стрелочные функции, а где-то обычные.
Не говорю, что это прямо критично. Но причесанный код читать гораздо легче и проще понять, о чем речь.
0
Добрый день, 777Polar_Fox777
На данный момент я работаю над этим и в скором времени сделаю код читабельным.
На данный момент я работаю над этим и в скором времени сделаю код читабельным.
-1
Я так и не понял куда вписывать коды для этих игр, как Орёл и решка, удаление сообщений и т.д.
0
Добрый день, FurryFandom
Их вписывать необязательно, но если вы желаете, то просто добавляйте функции и заносите в них по одной команде, после чего добавляйте функции в массив.
Вот, как это будет выглядеть, на примере удаления сообщений:
Их вписывать необязательно, но если вы желаете, то просто добавляйте функции и заносите в них по одной команде, после чего добавляйте функции в массив.
Вот, как это будет выглядеть, на примере удаления сообщений:
function clear(robot, mess, args) { // Создание новой функции с командой
const arggs = mess.content.split(' ').slice(1);
const amount = arggs.join(' ');
if (!amount) return mess.channel.send('Вы не указали, сколько сообщений нужно удалить!');
if (isNaN(amount)) return mess.channel.send('Это не число!');
if (amount > 100) return mess.channel.send('Вы не можете удалить 100 сообщений за раз');
if (amount < 1) return mess.channel.send('Вы должны ввести число больше чем 1');
async function delete_messages() {
await mess.channel.messages.fetch({ limit: amount }).then(messages => {
mess.channel.bulkDelete(messages)
mess.channel.send(`Удалено ${amount} сообщений!`)
})};
delete_messages();
}
var comms_list = [ // Добавление функции с командой в массив
{name: "clear", out: clear, about: "Удаление сообщений"},
}
0
Вы гений, спасибо за эту статью и целую помощь и если не сложно, так же сделать с орлом и решкой.
-1
Спасибо вам.
Код
function heads_or_tails(robot, mess, args) {
mess.channel.send('Монета подбрасывается...')
var random = Math.floor(Math.random() * 4);
if (random == 1) {
mess.channel.send(':full_moon: Орёл!')
} else if (random == 2) {
mess.channel.send(':new_moon: Решка!')
} else if (random == 3) {
mess.channel.send(':last_quarter_moon: Монета упала ребром!')
}
}
var comms_list = [
{name: "heads_or_tails", out: heads_or_tails, about: "«Орёл или Решка»"},
}
0
Sign up to leave a comment.
Создание Discord-бота, используя библиотеку discord.js | Часть №1