Fixed several small bugs in the discord commands

doc_update
Joey Hines 2018-08-05 09:08:20 -05:00
parent 796baaf3a6
commit 4b51951b65
3 changed files with 77 additions and 13 deletions

View File

@ -192,6 +192,16 @@ class Commands:
try: try:
player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid) player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid)
if loc_name is None:
loc_list = self.interface.find_location_by_owner(session, player)
if len(loc_list) == 0:
raise LocationLookUpError
elif len(loc_list) > 1:
raise EntryNameNotUniqueError
else:
location = loc_list[0]
else:
location = self.interface.find_location_by_name_and_owner(session, player, loc_name)[0] location = self.interface.find_location_by_name_and_owner(session, player, loc_name)[0]
location.x = x location.x = x
@ -247,6 +257,16 @@ class Commands:
try: try:
player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid) player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid)
if loc_name is None:
loc_list = self.interface.find_location_by_owner(session, player)
if len(loc_list) == 0:
raise LocationLookUpError
elif len(loc_list) > 1:
raise EntryNameNotUniqueError
else:
location = loc_list[0]
else:
location = self.interface.find_location_by_name_and_owner(session, player, loc_name)[0] location = self.interface.find_location_by_name_and_owner(session, player, loc_name)[0]
location.name = new_name location.name = new_name
@ -271,6 +291,18 @@ class Commands:
try: try:
player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid) player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid)
if shop_name is None:
shop_list = self.interface.find_shop_by_owner(session, player)
if len(shop_list) == 0:
raise LocationLookUpError
elif len(shop_list) > 1:
raise EntryNameNotUniqueError
else:
shop = shop_list[0]
else:
shop = self.interface.find_shop_by_name_and_owner(session, player, shop_name)[0] shop = self.interface.find_shop_by_name_and_owner(session, player, shop_name)[0]
expr = (ItemListing.name == item) & (ItemListing.shop == shop) expr = (ItemListing.name == item) & (ItemListing.shop == shop)

View File

@ -138,7 +138,7 @@ async def add_shop(ctx, x_pos: int, z_pos: int, *args):
@bot.command(pass_context=True) @bot.command(pass_context=True)
async def add_tunnel(ctx, tunnel_color: str, tunnel_number: int, *args): async def add_tunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
''' '''
Adds your tunnel to the database. Adds your tunnel to the database. If you only have one location, you do not need to specify a location name.
?tunnel [Tunnel Color] [Tunnel Number] [Location Name] ?tunnel [Tunnel Color] [Tunnel Number] [Location Name]
''' '''
@ -192,7 +192,7 @@ async def tunnel(ctx, player: str):
await bot.say('{}, **{}** owns the following tunnels: \n{}'.format(ctx.message.author.mention, player, result)) await bot.say('{}, **{}** owns the following tunnels: \n{}'.format(ctx.message.author.mention, player, result))
except LocationLookUpError: except LocationLookUpError:
await bot.say('{}, no tunnels for the player **{}** were found in the database/' await bot.say('{}, no tunnels for **{}** were found in the database.'
.format(ctx.message.author.mention, player)) .format(ctx.message.author.mention, player))
@ -235,6 +235,8 @@ async def find_around(ctx, x_pos: int, z_pos: int, * args):
if len(args) > 0: if len(args) > 0:
if args[0] == '-d': if args[0] == '-d':
dimension = args[1] dimension = args[1]
if len(args) > 1:
radius = int(args[2])
else: else:
radius = int(args[0]) radius = int(args[0])
@ -250,6 +252,9 @@ async def find_around(ctx, x_pos: int, z_pos: int, * args):
else: else:
await bot.say('{}, there are no locations within {} blocks of that point' await bot.say('{}, there are no locations within {} blocks of that point'
.format(ctx.message.author.mention, radius)) .format(ctx.message.author.mention, radius))
except ValueError:
await bot.say('{}, invalid radius, the radius must be a whole number.'.format(ctx.message.author.mention,
radius))
except InvalidDimError: except InvalidDimError:
await bot.say('{}, {} is an invalid dimension.'.format(ctx.message.author.mention, dimension)) await bot.say('{}, {} is an invalid dimension.'.format(ctx.message.author.mention, dimension))
@ -313,7 +318,7 @@ async def info(ctx, * args):
info_str = bot_commands.info(loc) info_str = bot_commands.info(loc)
await bot.say(info_str) await bot.say(info_str)
except IndexError: except IndexError:
await bot.say('{}, no locations in the database match {}.'.format(ctx.message.author.mention, loc)) await bot.say('{}, no locations in the database match **{}**.'.format(ctx.message.author.mention, loc))
return return
@ -389,9 +394,18 @@ async def delete_item(ctx, item: str, * args):
await bot.say('{}, **{}** has been removed from the inventory of **{}**.'. await bot.say('{}, **{}** has been removed from the inventory of **{}**.'.
format(ctx.message.author.mention, item, shop)) format(ctx.message.author.mention, item, shop))
except LocationLookUpError: except LocationLookUpError:
if shop is None:
await bot.say('{}, you do have any shops in the database.'.format(ctx.message.author.mention))
else:
await bot.say('{}, you do not have a shop called **{}**.'.format(ctx.message.author.mention, shop)) await bot.say('{}, you do not have a shop called **{}**.'.format(ctx.message.author.mention, shop))
except EntryNameNotUniqueError:
await bot.say('{}, you have more than one shop in the database, please specify a shop name.'
.format(ctx.message.author.mention))
except DeleteEntryError: except DeleteEntryError:
if shop is not None:
await bot.say('{}, **{}** does not sell **{}**.'.format(ctx.message.author.mention, shop, item)) await bot.say('{}, **{}** does not sell **{}**.'.format(ctx.message.author.mention, shop, item))
else:
await bot.say('{}, your shop does not sell **{}**.'.format(ctx.message.author.mention, item))
# Helper Functions ************************************************************ # Helper Functions ************************************************************

View File

@ -53,10 +53,6 @@ class TestCommands(TestCase):
self.commands.register('ZeroHD', '143072699567177728') self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728') self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
tunnel1 = self.commands.add_tunnel('green', 50, None, discord_uuid='143072699567177728')
self.assertGreater(len(tunnel1), 0)
tunnel2 = self.commands.add_tunnel('Green', 50, location_name='test_shop', discord_uuid='143072699567177728') tunnel2 = self.commands.add_tunnel('Green', 50, location_name='test_shop', discord_uuid='143072699567177728')
if 'Green' not in tunnel2: if 'Green' not in tunnel2:
@ -181,6 +177,18 @@ class TestCommands(TestCase):
else: else:
self.fail() self.fail()
self.commands.edit_pos(500, 500, None, discord_uuid='143072699567177728')
if '500' in result:
pass
else:
self.fail()
self.commands.delete(name='test shop', discord_uuid='143072699567177728')
self.assertRaises(LocationLookUpError, self.commands.edit_pos, 5, 5, None,
discord_uuid='143072699567177728')
def test_edit_tunnel(self): def test_edit_tunnel(self):
self.commands.register('ZeroHD', '143072699567177728') self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728') self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
@ -201,11 +209,21 @@ class TestCommands(TestCase):
self.commands.add_item('dirt', 5, 5, shop_name='test shop', discord_uuid='143072699567177728') self.commands.add_item('dirt', 5, 5, shop_name='test shop', discord_uuid='143072699567177728')
self.commands.add_item('wood', 5, 5, shop_name='test shop', discord_uuid='143072699567177728') self.commands.add_item('wood', 5, 5, shop_name='test shop', discord_uuid='143072699567177728')
result = self.commands.delete_item('dirt', 'test_shop', discord_uuid='143072699567177728') result = self.commands.delete_item('dirt', None, discord_uuid='143072699567177728')
if ('dirt' not in result) & ('wood' in result): if ('dirt' not in result) & ('wood' in result):
pass pass
else: else:
self.fail() self.fail()
self.commands.add_shop(0, 0, shop_name='test shop2', discord_uuid='143072699567177728')
self.assertRaises(EntryNameNotUniqueError, self.commands.delete_item, 'wood', None,
discord_uuid='143072699567177728')
self.commands.delete('test shop', discord_uuid='143072699567177728')
self.commands.delete('test shop2', discord_uuid='143072699567177728')
self.assertRaises(LocationLookUpError, self.commands.delete_item, 'wood', None,
discord_uuid='143072699567177728')