Найти тему
Не ITшники DJS

Меняющийся баннер Дискорд-сервера

Yo. Статистика здесь в шапке гильдии конечно клевая фича, но обычно получается что-то безвкусное, как у меня. Так, пока у нас на “Не ITшниках” есть достаточно бустов я искал что-бы такое поставить в баннер достойное, пока мне не посоветовали устанавливать в шапку случайный мем из сети.

Случайные картинки сюда не подойдут - для начала они должны быть в соотношении 16:9, разрешение - минимум 960 на 540 пикселей, а помимо этого название гильдии и кнопка настроек не должны накладываться на текст изображения. Потому лучше подготовить изображения самостоятельно.

Мемы Не ITшников есть в нашей группе Вконтакте
Мемы Не ITшников есть в нашей группе Вконтакте

Если мы пойдем этим путем, готовим папку с файлами и запускаем таймаут. Обычно это делается с помощью объявления функции и вызова в ней setTimeout, в скобках - название функции и после запятой кол-во миллисекунд для отсчета.

-2

Фетчим нужную гильдию, если у нее более 7 бустов, и функция доступна к использованию в переменную files получаем список файлов в папке с мемами. Конечно же модуль fs должен быть установлен и подключен в коде. Случайный мем подымаем с помощью получения случайного элемента в массиве и помещаем в guild.setBanner(). Все легко.

-3

Но что если я не хочу случайный мем подымать? У нас на запуске системы на сервере уже было такое - одна картинка могла не меняться несколько часов. Так для последовательной замены баннера нам нужно записывать индекс последнего использованного элемента в массиве или имя файла. Если последний использованный мем удален, то цикл начинается с нуля. Получаем индекс следующего элемента и тем же guild.setBanner обновляем шапку.

-4

Если ты будешь делать эту функцию для публичного бота для большого кол-ва гильдий с возможностью задавать список изображений, ты не захочешь скачивать их себе на хостинг. В таком случае легче будет тупо записывать в БД ссылки. Коль так, нам понадобится модуль Canvas. Вытаскиваем из него методы loadImage - загрузка файла по ссылке, и создание полотна (createCanvas), куда мы выведем фон.

canvas.toBuffer

guild.setBanner и в скобках buffer. Вот собственно и все.

На этом на сегодня все. Спасибо за внимание, удачи и пока!

❤️ Поддержка канала: https://boosty.to/iamnotacoder
Наш Discord сервер:
https://discord.gg/YeqrTtpmaH
Телеграм:
https://t.me/iamnotacoderdjs
Вконтакте:
https://vk.com/iamnotacoderdjs