Почему бот не реагирует на сообщения, когда он должен показывать онлайн на майнкрафт сервере?
Вот код:
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)
Почему бот не реагирует на сообщения, когда он должен показывать онлайн на майнкрафт сервере?