Почему бот не реагирует на сообщения, когда он должен показывать онлайн на майнкрафт сервере?

Вот код:

import discord
from discord.ext import commands, tasks
from dotenv import load_dotenv
import os
import requests
import json

load_dotenv()

TOKEN = os.getenv('DISCORD_TOKEN')
MC_SERVER_NAME = "example.com"

intents = discord.Intents.default()
intents.members = True

client = commands.Bot(command_prefix='!', intents=intents)

@client.event
async def on_ready():
    update_status.start()
    print('Bot is ready.')

@tasks.loop(seconds=100)
async def update_status():
    url = f'https://api.mcsrvstat.us/2/{MC_SERVER_NAME}'
    response = requests.get(url)
    data = json.loads(response.text)
    players_online = data.get('players', {}).get('online', 0)
    player_names = ', '.join(data.get('players', {}).get('list', []))
    if players_online > 0:
        await client.change_presence(activity=discord.Game(name=f"Minecraft | {players_online} online | Last player: {player_names}"))
    else:
        await client.change_presence(activity=discord.Game(name=f"Minecraft | {players_online} online"))

@client.command()
async def online(ctx):
    try:
        url = f'https://api.mcsrvstat.us/2/{MC_SERVER_NAME}'
        response = requests.get(url)
        data = json.loads(response.text)
        players_online = data.get('players', {}).get('online', 0)
        player_names = ', '.join(data.get('players', {}).get('list', []))
        if players_online > 0:
            await ctx.send(f'Онлайн игроков на сервере: {players_online}\nИгроки: {player_names}')
        else:
            await ctx.send(f'На сервере нет игроков в данный момент.')
    except:
        await ctx.send(f'Сервер недоступен в данный момент.')

client.run(TOKEN)

Почему бот не реагирует на сообщения, когда он должен показывать онлайн на майнкрафт сервере?


Ответы (0 шт):