parent
403e6072e5
commit
cd4e449969
@ -0,0 +1,83 @@ |
|||||||
|
import discord |
||||||
|
from discord.ext import commands |
||||||
|
import requests |
||||||
|
import os |
||||||
|
from dotenv import load_dotenv |
||||||
|
import random |
||||||
|
import multiprocessing |
||||||
|
|
||||||
|
# Variables |
||||||
|
BOT_NAME = "MinecraftBot" |
||||||
|
load_dotenv() |
||||||
|
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN") |
||||||
|
|
||||||
|
minecraft_server_url = "lightmc.fun" # this is just an example, and you should use your own minecraft server |
||||||
|
|
||||||
|
bot_help_message = """ |
||||||
|
:: Bot Usage :: |
||||||
|
`!mc help` : shows help |
||||||
|
`!mc serverusage` : shows system load in percentage |
||||||
|
`!mc serverstatus` : shows if the server is online or offline |
||||||
|
`!mc whoisonline` : shows who is online at the moment |
||||||
|
""" |
||||||
|
|
||||||
|
available_commands = ['help', 'serverusage', 'serverstatus', 'whoisonline'] |
||||||
|
|
||||||
|
# Set the bot command prefix |
||||||
|
bot = commands.Bot(command_prefix="!") |
||||||
|
|
||||||
|
# Executes when the bot is ready |
||||||
|
@bot.event |
||||||
|
async def on_ready(): |
||||||
|
print(f'{bot.user} succesfully logged in!') |
||||||
|
|
||||||
|
# Executes whenever there is an incoming message event |
||||||
|
@bot.event |
||||||
|
async def on_message(message): |
||||||
|
print(f'Guild: {message.guild.name}, User: {message.author}, Message: {message.content}') |
||||||
|
if message.author == bot.user: |
||||||
|
return |
||||||
|
|
||||||
|
if message.content == '!mc': |
||||||
|
await message.channel.send(bot_help_message) |
||||||
|
|
||||||
|
if 'whosonline' in message.content: |
||||||
|
print(f'{message.author} used {message.content}') |
||||||
|
await bot.process_commands(message) |
||||||
|
|
||||||
|
# Executes when the command mc is used and we trigger specific functions |
||||||
|
# when specific arguments are caught in our if statements |
||||||
|
@bot.command() |
||||||
|
async def mc(ctx, arg): |
||||||
|
if arg == 'help': |
||||||
|
await ctx.send(bot_help_message) |
||||||
|
|
||||||
|
if arg == 'serverusage': |
||||||
|
cpu_count = multiprocessing.cpu_count() |
||||||
|
one, five, fifteen = os.getloadavg() |
||||||
|
load_percentage = int(five / cpu_count * 100) |
||||||
|
await ctx.send(f'Server load is at {load_percentage}%') |
||||||
|
|
||||||
|
if arg == 'serverstatus': |
||||||
|
response = requests.get(f'https://api.mcsrvstat.us/2/{minecraft_server_url}').json() |
||||||
|
server_status = response['online'] |
||||||
|
if server_status == True: |
||||||
|
server_status = 'online' |
||||||
|
await ctx.send(f'Server is {server_status}') |
||||||
|
|
||||||
|
if arg == 'whoisonline': |
||||||
|
response = requests.get('https://api.mcsrvstat.us/2/{minecraft_server_url}').json() |
||||||
|
players_status = response['players'] |
||||||
|
if players_status['online'] == 0: |
||||||
|
players_online_message = 'No one is online' |
||||||
|
if players_status['online'] == 1: |
||||||
|
players_online_username = players_status['list'][0] |
||||||
|
players_online_message = f'1 player is online: {players_online_username}' |
||||||
|
if players_status['online'] > 1: |
||||||
|
po = players_status['online'] |
||||||
|
players_online_usernames = players_status['list'] |
||||||
|
joined_usernames = ", ".join(players_online_usernames) |
||||||
|
players_online_message = f'{po} players are online: {joined_usernames}' |
||||||
|
await ctx.send(f'{players_online_message}') |
||||||
|
|
||||||
|
bot.run(DISCORD_TOKEN) |
Loading…
Reference in new issue