Untitled

 avatar
unknown
python
2 years ago
1.4 kB
4
Indexable
import discord
import asyncio
import ping3

DISCORD_BOT_TOKEN = 'MTEzNDk1MjE0NDczOTUxNjUyNg.GEXLvu.JrHwkBeT6H4UQx5P5WU_Stv-A7hZeTG0b0iKLU'
CHANNEL_ID = 1134934695507939471
MINECRAFT_SERVER_IP = '23.241.209.111'
MINECRAFT_SERVER_PORT = 25565

client = discord.Client()

@client.event
async def on_ready():
    print(f'Logged in as {client.user.name} ({client.user.id})')
    print('Bot is ready to show Minecraft server status.')

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    # Listen for a specific command to stop the bot
    if message.content.lower() == '!stopbot':
        await message.channel.send('Stopping the bot.')
        await client.close()  # Gracefully close the bot

async def check_server_status():
    while True:
        status = "offline"
        try:
            response_time = ping3.ping(MINECRAFT_SERVER_IP, MINECRAFT_SERVER_PORT, timeout=1)
            if response_time is not None:
                status = "online"
        except ping3.exceptions.Timeout:
            pass

        channel = client.get_channel(CHANNEL_ID)
        await channel.send(f'Minecraft server is {status}.')

        await asyncio.sleep(60)

if __name__ == '__main__':
    client.loop.create_task(check_server_status())

    try:
        client.run(DISCORD_BOT_TOKEN)
    except KeyboardInterrupt:
        print('Bot stopped manually.')
Editor is loading...