Способ актуален для серверов, работающих 24/7 (держащихся на VDS, например).
Всем привет! В данном мануале Вы узнаете, как можно вывести онлайн своего сервера в название канала в Discord.
Для корректной работы бота у Вас должен быть установить Python.
Ссылка для скачивания:
https://www.python.org/downloads/
Для начала необходимо создать Discord бота на портале разработчиков Discord:
https://discord.com/developers.
Переходим по ссылке, авторизовываемся в свой аккаунт Discord, если ранее Вы этого не делали, и идём дальше.
Итак, перед нами главная страница портала.
Нажимаем кнопку "New Application", вводим имя приложения, соглашаемся с Developer Terms of Service и Developer Policy, и нажимаем "Create".
Бот успешно создан.
Переходим во вкладку Bot и нажимаем кнопку "Reset Token", копируем токен (ТОКЕН ЯВЛЯЕТСЯ СЕКРЕТНЫМ. НЕ РЕКОМЕНДУЕТСЯ ОТПРАВЛЯТЬ ЕГО КОМУ-ЛИБО.), листаем ниже, и в главе Privileged Gateway Intents переключаем все тумблеры.
Далее открываем папку Вашего сервера в Visual Studio Code, переходим в packages, создаём файл discordOnline.js, и вписываем в него следующий код:
JavaScript:
const http = require('http');
const server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.write(`${mp.players.length}/${mp.players.size}`);
response.end();
});
server.listen(8080);
console.log('\nМониторинг запущен. Онлайн передан в Discord.');
Переходим в index.js и пишем в него:
JavaScript:
require('./discordOnline.js')
Перезапускаем сервер и переходим по ссылке
http://localhost:8080.
Проверяем, запустился ли у нас http-сервер. На странице должен быть написан онлайн Вашего сервера. (0/1000, например)
Если сервер запущен, идём дальше.
На рабочем столе (местоположение как пример) создаём папку onlineBot и открываем её в Visual Studio Code.
После открытия папки в VSC нажимаем Ctrl + Ё (терминал) и вводим туда следующие строки:
Python:
pip install disnake
pip install requests
Проверяем, чтобы не было никаких ошибок, и идём дальше.
Создаём в только что открытой папке файл main.py и вставляет в него следующий код:
Python:
import disnake
import requests
from disnake.ext import tasks
intents = disnake.Intents.all()
bot = commands.Bot(command_prefix='.', intents=intents)
@tasks.loop(seconds=120)
async def update_channel_name():
guild_id = ID_ВАШЕГО_DISCORD_СЕРВЕРА
channel_id = ID_КАНАЛА_ДЛЯ_ОТОБРАЖЕНИЯ_ОНЛАЙНА
# id вводить без каких-либо кавычек, просто цифры.
guild = bot.get_guild(guild_id)
channel = guild.get_channel(channel_id)
url = "http://localhost:8080/"
response = requests.get(url)
if response.status_code == 200:
source_code = response.text
if guild and channel:
await channel.edit(name=f'Онлайн сервера: {source_code}')
@bot.event
async def on_connect():
update_channel_name.start()
bot.run('ТОКЕН_ВАШЕГО_БОТА')
Обязательно поменяйте в коде ID Вашего Discord сервера и ID канала который будет использоваться как "мониторинг" онлайна на Ваши значения.
После того, как мы всё сделали - запускаем наш файл командой
и проверяем канал.
Как видим, всё работает.