Browse Source

Botflop now gives people 3 backups if they don't already have them

master
Purpur 4 years ago
committed by GitHub
parent
commit
89a25a129d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 72
      bot.py

72
bot.py

@ -2,8 +2,6 @@ import os
import discord import discord
import requests import requests
import json import json
import asyncio
import aiohttp
import logging import logging
import sys import sys
from discord.ext import commands, tasks from discord.ext import commands, tasks
@ -22,6 +20,8 @@ verified_role_id = int(os.getenv('verified_role_id'))
guild_id = int(os.getenv('guild_id')) guild_id = int(os.getenv('guild_id'))
verification_channel = int(os.getenv('verification_channel')) verification_channel = int(os.getenv('verification_channel'))
verification_message = int(os.getenv('verification_message')) verification_message = int(os.getenv('verification_message'))
application_api_key = os.getenv('application_api_key')
logging.basicConfig(filename = 'console.log', logging.basicConfig(filename = 'console.log',
level = logging.INFO, level = logging.INFO,
format = '[%(asctime)s %(levelname)s] %(message)s', format = '[%(asctime)s %(levelname)s] %(message)s',
@ -252,8 +252,8 @@ async def react(ctx, url, reaction):
logging.info('reacted to ' + url + ' with ' + reaction) logging.info('reacted to ' + url + ' with ' + reaction)
@tasks.loop(minutes=10) @tasks.loop(minutes=10)
async def update_servers():
logging.info("synchronizing roles")
async def updater():
logging.info("Synchronizing roles")
file = open('users.json', 'r') file = open('users.json', 'r')
data = json.load(file) data = json.load(file)
file.close() file.close()
@ -348,12 +348,70 @@ async def update_servers():
file.close() file.close()
logging.info("removed discord_id " + str(client['discord_id']) + " with client_id " + str(client['client_id']) + " and client_api_key " + client['client_api_key']) logging.info("removed discord_id " + str(client['discord_id']) + " with client_id " + str(client['client_id']) + " and client_api_key " + client['client_api_key'])
@update_servers.before_loop
async def before_update_servers():
# Update backups
logging.info('Ensuring backups')
url = "https://panel.birdflop.com/api/application/servers"
cookies = {
'pterodactyl_session': 'eyJpdiI6InhIVXp5ZE43WlMxUU1NQ1pyNWRFa1E9PSIsInZhbHVlIjoiQTNpcE9JV3FlcmZ6Ym9vS0dBTmxXMGtST2xyTFJvVEM5NWVWbVFJSnV6S1dwcTVGWHBhZzdjMHpkN0RNdDVkQiIsIm1hYyI6IjAxYTI5NDY1OWMzNDJlZWU2OTc3ZDYxYzIyMzlhZTFiYWY1ZjgwMjAwZjY3MDU4ZDYwMzhjOTRmYjMzNDliN2YifQ%3D%3D',
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + application_api_key,
}
response = requests.get(url, headers=headers, cookies=cookies)
servers_json_response = response.json()
file = open('modified_servers.json', 'r')
modified_servers = json.load(file)
file.close()
i = -1
for server in servers_json_response['data']:
i += 1
already_exists = False
for server2 in modified_servers['servers']:
if already_exists == False:
if server['attributes']['uuid'] == server2['uuid']:
already_exists = True
if already_exists == False:
cookies = {
'pterodactyl_session': 'eyJpdiI6InhIVXp5ZE43WlMxUU1NQ1pyNWRFa1E9PSIsInZhbHVlIjoiQTNpcE9JV3FlcmZ6Ym9vS0dBTmxXMGtST2xyTFJvVEM5NWVWbVFJSnV6S1dwcTVGWHBhZzdjMHpkN0RNdDVkQiIsIm1hYyI6IjAxYTI5NDY1OWMzNDJlZWU2OTc3ZDYxYzIyMzlhZTFiYWY1ZjgwMjAwZjY3MDU4ZDYwMzhjOTRmYjMzNDliN2YifQ%3D%3D',
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + application_api_key,
}
data = '{ "allocation": ' + str(server['attributes']['allocation']) + ', "memory": ' + str(server['attributes']['limits']['memory']) + ', "swap": 0, "disk": ' + str(server['attributes']['limits']['disk']) + ', "io": ' + str(server['attributes']['limits']['io']) + ', "cpu": ' + str(server['attributes']['limits']['cpu']) + ', "threads": null, "feature_limits": { "databases": ' + str(server['attributes']['feature_limits']['databases']) + ', "allocations": ' + str(server['attributes']['feature_limits']['allocations']) + ', "backups": 3 } }'
response = requests.patch('https://panel.birdflop.com/api/application/servers/' + str(server['attributes']['id']) + '/build', headers=headers, cookies=cookies, data=data)
if (str(response)) == "<Response [200]>":
modified_servers['servers'].append({
'uuid': str(server['attributes']['uuid'])
})
file = open('modified_servers.json', 'w')
json_dumps = json.dumps(modified_servers, indent=2)
file.write(json_dumps)
file.close()
logging.info("modified " + str(server['attributes']['name']) + ' with data ' + data)
else:
logging.info("failed to modify " + str(server['attributes']['name']) + ' with data ' + data)
@updater.before_loop
async def before_updater():
logging.info('waiting to enter loop') logging.info('waiting to enter loop')
await bot.wait_until_ready() await bot.wait_until_ready()
update_servers.start()
updater.start()
bot.run(token) bot.run(token)
# full name: message.author.name + "#" + str(message.author.discriminator) + " (" + str(message.author.id) + ")" # full name: message.author.name + "#" + str(message.author.discriminator) + " (" + str(message.author.id) + ")"

Loading…
Cancel
Save