This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Мануал [JS + Python] [Server-side] Выводим онлайн сервера в Discord

blago

Начинающий специалист
Автор темы
9 Сен 2021
44
11
50
Способ актуален для серверов, работающих 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 канала который будет использоваться как "мониторинг" онлайна на Ваши значения.

После того, как мы всё сделали - запускаем наш файл командой
Python:
python main.py
и проверяем канал.

Как видим, всё работает.

 

Вложения

  • 1707998997567.png
    14.7 KB · Просмотры: 36
Реакции: Deja-vu

blago

Начинающий специалист
Автор темы
9 Сен 2021
44
11
50
При возникновении проблем/ошибок можете обращаться в Discord — rizza.c17h21no4
ID: 872752103242743809
 

enotit

Гуру
13 Ноя 2020
551
239
107
Мануал бомба, но советую вынести данный скрипт из сервера. И чекать json мастерлиста, дабы не нагружать сервер. И тогда только на питоне получиться)
 
Реакции: Deja-vu