Band-aid solution for the register problem. Mods can now manually add players to the database. Mods can now search for players too. Also fixed a few small issues.

doc_update
Joey Hines 2018-09-14 08:21:02 -05:00
parent 135aabb248
commit 1ed9252858
5 changed files with 91 additions and 1 deletions

View File

@ -380,3 +380,36 @@ class Commands:
raise e
finally:
session.close()
def add_player(self, discord_uuid, mc_name):
session = self.interface.database.Session()
try:
self.interface.find_player_by_discord_uuid(session, discord_uuid)
out = "is already in database."
except PlayerNotFound:
player = Player(mc_name, discord_id=discord_uuid)
self.interface.database.add_object(session, player)
player = self.interface.find_player_by_discord_uuid(session, discord_uuid)
out = "has been added to the database with id {}".format(player.id)
finally:
session.close()
return out
def find_player(self, discord_uuid):
session = self.interface.database.Session()
try:
player = self.interface.find_player_by_discord_uuid(session, discord_uuid)
id = player.id
username = player.name
discord_uuid = player.discord_uuid
minecraft_uuid = player.mc_uuid
finally:
session.close()
return id, username, discord_uuid, minecraft_uuid

View File

@ -76,6 +76,9 @@ class GeoffreyBot(commands.Bot):
logger.info("User %s, used command %s%s with context: %s", ctx.message.author, ctx.command, subcommand,
ctx.args)
if ctx.invoked_with == 'help':
await ctx.send("{}, I sent you some help in the DMs.".format(ctx.message.author.mention))
async def on_command_error(self, ctx, error):
error_str = ''
if hasattr(ctx, 'cog'):

View File

@ -61,7 +61,7 @@ class Add_Commands:
@commands.cooldown(5, 60, commands.BucketType.user)
async def add_shop(self, ctx, x_pos: int, z_pos: int, *args):
"""
Adds your shop to the database. The name is shop optional if this your first shop
Adds your shop to the database. The name is optional if this your first shop
?add_shop [X Coordinate] [Z Coordinate] [Shop Name]
"""

View File

@ -129,6 +129,32 @@ class Admin_Commands:
await self.bot.change_presence(activity=Game(status))
await ctx.send('{}, status has been changed'.format(ctx.message.author.mention))
@mod.command(pass_context=True)
async def add_player(self, ctx, discord_uuid: str, mc_name: str):
"""
Manually add a player to the database
"""
str = self.bot.bot_commands.add_player(discord_uuid, mc_name)
await ctx.send('{}, user **{}** {}.'
.format(ctx.message.author.mention, mc_name, str))
@add_player.error
async def add_player_error(self, ctx, error):
await self.error(ctx, error)
@mod.command(pass_context=True)
async def find_player(self, ctx, discord_uuid: str):
"""
Finds a player in the database
"""
id, username, discord_uuid, minecraft_uuid = self.bot.bot_commands.find_player(discord_uuid)
await ctx.send('Username: {}, id: {}, Discord UUID: {}, Minecraft UUID: {}'
.format(username, id, discord_uuid, minecraft_uuid))
@find_player.error
async def find_player_error(self, ctx, error):
await self.error(ctx, error)
def setup(bot):
bot.add_cog(Admin_Commands(bot))

View File

@ -1,4 +1,5 @@
import os
import time
from unittest import TestCase
from Commands import *
@ -259,3 +260,30 @@ class TestCommands(TestCase):
self.assertRaises(PlayerNotFound, self.commands.add_shop, 0, 0, shop_name='test shop',
discord_uuid='143072699567177728')
def test_register_and_add(self):
for i in range(0, 1000):
time.sleep(10)
self.commands.register('BirbHD', '143072699567177728')
time.sleep(10)
self.commands.add_base(0, 0, "tmpB" + str(i), discord_uuid='143072699567177728')
time.sleep(15)
self.commands.register('YMCA', '151081244824698880')
time.sleep(10)
try:
self.commands.add_tunnel("North", i, discord_uuid='151081244824698880')
except:
False
time.sleep(1)
self.commands.add_base(0, 0, "tmpY" + str(i), discord_uuid='151081244824698880')
if "YMCA" not in self.commands.find("YMCA"):
self.fail()
self.session = self.commands.interface.database.Session()
self.commands.interface.database.clear_all(self.session)