Бот Discord, который пингует сервер minecraft. Python - PullRequest
0 голосов
/ 05 августа 2020

Я хочу создать бота Discord, который пингует сервер minecraft и: если сервер отвечает, он редактирует имя голосового канала блокировки на «Server Status - Online». В противном случае он редактирует имя канала: «Статус сервера - не в сети» Я использую mcstatus для проверки связи с сервером, и это работает! Но иногда у бота возникают лаги, и я не знаю, как это исправить. Ps извините за мой плохой engli sh.

from mcstatus import MinecraftServer
import discord
from discord.ext import commands
import time

TOKEN = "token here"

client = discord.Client()

@client.event

async def on_ready():
    print("Bot Connected")
    await client.wait_until_ready()
    channel = client.get_channel(id)
    while True:
        time.sleep(30)
        try:
            server = MinecraftServer.lookup("26.51.174.109:25565")
            status = server.status()
            await channel.edit(name = "Server Status - Online")
        except:
            await channel.edit(name = "Server Status - Offline")
client.run( TOKEN )

UPD: переписываю код, но проблема не пропала.

import discord
import asyncio
import time
import socket
TOKEN = "token"

client = discord.Client()

@client.event

async def on_ready():
    print("Bot Connected")
    await client.wait_until_ready()
    channel = client.get_channel(id)            
    def ping(ip, port):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect((ip, int(port)))
            return True
        except:
            return False
    while True:
        online = ping("26.51.174.109", "25565")
        if online == True:
            print("server online")
            await channel.edit(name = "Server Status - Online")
        else:
            print("server offline")
            await channel.edit(name = "Server Status - Offline")
        await asyncio.sleep(5)
client.run( TOKEN )
...