Added a new command for finding tunnels and fixed a few issues.
parent
5dbbcd69e0
commit
91999322ec
39
Commands.py
39
Commands.py
|
@ -47,33 +47,33 @@ class Commands:
|
||||||
|
|
||||||
base = self.interface.add_location(session, player, base_name, x_pos, z_pos)
|
base = self.interface.add_location(session, player, base_name, x_pos, z_pos)
|
||||||
|
|
||||||
base_name = base.name
|
base_str = base.__str__()
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
return base_name
|
return base_str
|
||||||
|
|
||||||
def addshop(self, x_pos, z_pos, shop_name=None, discord_uuid=None, mc_uuid=None):
|
def addshop(self, x_pos, z_pos, shop_str=None, discord_uuid=None, mc_uuid=None):
|
||||||
session = self.interface.database.Session()
|
session = self.interface.database.Session()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
player = self.get_player(session, discord_uuid, mc_uuid)
|
player = self.get_player(session, discord_uuid, mc_uuid)
|
||||||
|
|
||||||
if len(self.interface.find_shop_by_owner(session, player)) == 0:
|
if len(self.interface.find_shop_by_owner(session, player)) == 0:
|
||||||
if shop_name is None:
|
if shop_str is None:
|
||||||
shop_name = "{}'s Shop".format(player.name)
|
shop_str = "{}'s Shop".format(player.name)
|
||||||
elif shop_name is None:
|
elif shop_str is None:
|
||||||
raise EntryNameNotUniqueError
|
raise EntryNameNotUniqueError
|
||||||
|
|
||||||
shop = self.interface.add_shop(session, player, shop_name, x_pos, z_pos)
|
shop = self.interface.add_shop(session, player, shop_str, x_pos, z_pos)
|
||||||
|
|
||||||
shop_name = shop.name
|
shop_str = shop.__str__()
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
return shop_name
|
return shop_str
|
||||||
|
|
||||||
def tunnel(self, tunnel_color, tunnel_number, location_name, discord_uuid=None, mc_uuid=None):
|
def addtunnel(self, tunnel_color, tunnel_number, location_name, discord_uuid=None, mc_uuid=None):
|
||||||
|
|
||||||
session = self.interface.database.Session()
|
session = self.interface.database.Session()
|
||||||
try:
|
try:
|
||||||
|
@ -153,3 +153,22 @@ class Commands:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
return loc
|
return loc
|
||||||
|
|
||||||
|
def tunnel(self, player_name):
|
||||||
|
session = self.interface.database.Session()
|
||||||
|
|
||||||
|
try:
|
||||||
|
tunnel_list = self.interface.find_tunnel_by_owner_name(session, player_name)
|
||||||
|
|
||||||
|
if len(tunnel_list) == 0:
|
||||||
|
raise LocationLookUpError
|
||||||
|
|
||||||
|
tunnel_str = ''
|
||||||
|
|
||||||
|
for tunnel in tunnel_list:
|
||||||
|
tunnel_str = '{}\n{}'.format(tunnel_str, tunnel.full_str())
|
||||||
|
|
||||||
|
finally:
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
return tunnel_str
|
||||||
|
|
|
@ -99,7 +99,7 @@ class DatabaseInterface:
|
||||||
return self.database.query_by_filter(session, Tunnel, expr)
|
return self.database.query_by_filter(session, Tunnel, expr)
|
||||||
|
|
||||||
def find_tunnel_by_owner_name(self, session, owner_name):
|
def find_tunnel_by_owner_name(self, session, owner_name):
|
||||||
expr = Tunnel.owner.has(Player.name.ilike(owner_name))
|
expr = Tunnel.owner.has(Player.name.ilike('%{}%'.format(owner_name)))
|
||||||
return self.database.query_by_filter(session, Tunnel, expr)
|
return self.database.query_by_filter(session, Tunnel, expr)
|
||||||
|
|
||||||
def find_item(self, session, item_name):
|
def find_item(self, session, item_name):
|
||||||
|
@ -150,11 +150,12 @@ class DatabaseInterface:
|
||||||
loc_string = "{}\n{}".format(loc_string, loc)
|
loc_string = "{}\n{}".format(loc_string, loc)
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
loc_string = loc_string + '\n\n**Tunnels:**'
|
|
||||||
|
|
||||||
expr = Tunnel.owner.has(Player.name.ilike('%{}%'.format(search))) & Tunnel.location == None
|
expr = Tunnel.owner.has(Player.name.ilike('%{}%'.format(search))) & Tunnel.location == None
|
||||||
|
tunnels = self.database.query_by_filter(session, Tunnel, expr)
|
||||||
|
|
||||||
for tunnel in self.database.query_by_filter(session, Tunnel, expr):
|
if len(tunnels) > 0:
|
||||||
|
loc_string = loc_string + '\n\n**Tunnels:**'
|
||||||
|
for tunnel in tunnels:
|
||||||
loc_string = "{}\n{}".format(loc_string, tunnel.full_str())
|
loc_string = "{}\n{}".format(loc_string, tunnel.full_str())
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ class Tunnel(SQL_Base):
|
||||||
raise TunnelInitError
|
raise TunnelInitError
|
||||||
|
|
||||||
def full_str(self):
|
def full_str(self):
|
||||||
return 'Owner: **{}**\'s Tunnel: **{}**'.format(self.owner.name, self.__str__())
|
return 'Owner: **{}** Tunnel: **{}**'.format(self.owner.name, self.__str__())
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{} {}'.format(self.tunnel_direction.value.title(), self.tunnel_number)
|
return '{} {}'.format(self.tunnel_direction.value.title(), self.tunnel_number)
|
||||||
|
|
34
Geoffrey.py
34
Geoffrey.py
|
@ -96,7 +96,7 @@ async def addbase(ctx, x_pos: int, z_pos: int, * args):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
base = bot_commands.addbase(x_pos, z_pos, base_name=name, discord_uuid=ctx.message.author.id)
|
base = bot_commands.addbase(x_pos, z_pos, base_name=name, discord_uuid=ctx.message.author.id)
|
||||||
await bot.say('{}, your base has been added to the database: {}'.format(ctx.message.author.mention, base))
|
await bot.say('{}, your base has been added to the database: \n\n{}'.format(ctx.message.author.mention, base))
|
||||||
except LocationInitError:
|
except LocationInitError:
|
||||||
raise commands.UserInputError
|
raise commands.UserInputError
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
|
@ -121,8 +121,8 @@ async def addshop(ctx, x_pos: int, z_pos: int, *args):
|
||||||
name = None
|
name = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
shop = bot_commands.addshop(x_pos, z_pos, shop_name=name, discord_uuid=ctx.message.author.id)
|
shop = bot_commands.addshop(x_pos, z_pos, shop_str=name, discord_uuid=ctx.message.author.id)
|
||||||
await bot.say('{}, your shop has been added to the database: {}'.format(ctx.message.author.mention, shop))
|
await bot.say('{}, your shop has been added to the database: \n\n{}'.format(ctx.message.author.mention, shop))
|
||||||
except LocationInitError:
|
except LocationInitError:
|
||||||
raise commands.UserInputError
|
raise commands.UserInputError
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
|
@ -134,7 +134,7 @@ async def addshop(ctx, x_pos: int, z_pos: int, *args):
|
||||||
ctx.message.author.mention, name))
|
ctx.message.author.mention, name))
|
||||||
|
|
||||||
@bot.command(pass_context=True)
|
@bot.command(pass_context=True)
|
||||||
async def tunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
|
async def addtunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
|
||||||
'''
|
'''
|
||||||
Adds your tunnel to the database.
|
Adds your tunnel to the database.
|
||||||
The location name is optional. If the location has a tunnel, it is updated.
|
The location name is optional. If the location has a tunnel, it is updated.
|
||||||
|
@ -146,7 +146,7 @@ async def tunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
|
||||||
else:
|
else:
|
||||||
location_name = None
|
location_name = None
|
||||||
|
|
||||||
bot_commands.tunnel(tunnel_color, tunnel_number, discord_uuid=ctx.message.author.id, location_name=location_name)
|
bot_commands.addtunnel(tunnel_color, tunnel_number, discord_uuid=ctx.message.author.id, location_name=location_name)
|
||||||
await bot.say('{}, your tunnel has been added to the database'.format(ctx.message.author.mention))
|
await bot.say('{}, your tunnel has been added to the database'.format(ctx.message.author.mention))
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
await bot.say('{}, you already have one tunnel in the database, please specify a location.'.format(
|
await bot.say('{}, you already have one tunnel in the database, please specify a location.'.format(
|
||||||
|
@ -175,6 +175,20 @@ async def find(ctx, * args):
|
||||||
except LocationLookUpError:
|
except LocationLookUpError:
|
||||||
await bot.say('{}, no matches to **{}** were found in the database'.format(ctx.message.author.mention, search))
|
await bot.say('{}, no matches to **{}** were found in the database'.format(ctx.message.author.mention, search))
|
||||||
|
|
||||||
|
@bot.command(pass_context=True)
|
||||||
|
async def tunnel(ctx, player: str):
|
||||||
|
'''
|
||||||
|
Finds all the tunnels a player owns.
|
||||||
|
?tunnel [Player]
|
||||||
|
'''
|
||||||
|
try:
|
||||||
|
result = bot_commands.tunnel(player)
|
||||||
|
|
||||||
|
await bot.say('{}, **{}** owns the following tunnels: \n{}'.format(ctx.message.author.mention, player, result))
|
||||||
|
except LocationLookUpError:
|
||||||
|
await bot.say('{}, no tunnels for the player **{}** were found in the database'
|
||||||
|
.format(ctx.message.author.mention, player))
|
||||||
|
|
||||||
@bot.command(pass_context=True)
|
@bot.command(pass_context=True)
|
||||||
async def delete(ctx, * args):
|
async def delete(ctx, * args):
|
||||||
'''
|
'''
|
||||||
|
@ -242,9 +256,10 @@ async def additem(ctx, item_name: str, quantity: int, diamond_price: int, * args
|
||||||
else:
|
else:
|
||||||
shop_name = None
|
shop_name = None
|
||||||
|
|
||||||
bot_commands.additem(item_name, quantity, diamond_price, shop_name=shop_name)
|
bot_commands.additem(item_name, quantity, diamond_price, shop_name=shop_name,
|
||||||
await bot.say('{}, **{}** has been added to the inventory of **{}**.'.format(ctx.message.author.mention,
|
discord_uuid=ctx.message.author.id)
|
||||||
item_name, shop_name))
|
await bot.say('{}, **{}** has been added to the inventory of your shop.'.format(ctx.message.author.mention,
|
||||||
|
item_name))
|
||||||
except PlayerNotFound:
|
except PlayerNotFound:
|
||||||
await bot.say('{}, you don\'t have any shops in the database.'.format(ctx.message.author.mention))
|
await bot.say('{}, you don\'t have any shops in the database.'.format(ctx.message.author.mention))
|
||||||
except LocationInitError:
|
except LocationInitError:
|
||||||
|
@ -315,13 +330,12 @@ def get_args_dict(args):
|
||||||
def update_user_names(bot_commands):
|
def update_user_names(bot_commands):
|
||||||
threading.Timer(600, update_user_names, [bot_commands]).start()
|
threading.Timer(600, update_user_names, [bot_commands]).start()
|
||||||
session = bot_commands.interface.database.Session()
|
session = bot_commands.interface.database.Session()
|
||||||
|
print("Updating MC usernames...")
|
||||||
player_list = session.query(Player).all()
|
player_list = session.query(Player).all()
|
||||||
|
|
||||||
for player in player_list:
|
for player in player_list:
|
||||||
player.name = grab_playername(player.mc_uuid)
|
player.name = grab_playername(player.mc_uuid)
|
||||||
|
|
||||||
print("Updating MC usernames...")
|
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
session.close()
|
session.close()
|
||||||
|
|
|
@ -49,15 +49,15 @@ class TestCommands(TestCase):
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def test_tunnel(self):
|
def test_addtunnel(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
self.commands.addshop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
tunnel1 = self.commands.tunnel('green', 50, None, discord_uuid='143072699567177728')
|
tunnel1 = self.commands.addtunnel('green', 50, None, discord_uuid='143072699567177728')
|
||||||
|
|
||||||
self.assertGreater(len(tunnel1), 0)
|
self.assertGreater(len(tunnel1), 0)
|
||||||
|
|
||||||
tunnel2 = self.commands.tunnel('Green', 50, location_name='test_shop', discord_uuid='143072699567177728')
|
tunnel2 = self.commands.addtunnel('Green', 50, location_name='test_shop', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
if 'Green' not in tunnel2:
|
if 'Green' not in tunnel2:
|
||||||
self.fail()
|
self.fail()
|
||||||
|
@ -66,7 +66,7 @@ class TestCommands(TestCase):
|
||||||
|
|
||||||
def test_find(self):
|
def test_find(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
self.commands.addshop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
|
||||||
self.commands.addbase(0, 0, 'heck', discord_uuid='143072699567177728')
|
self.commands.addbase(0, 0, 'heck', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
result = self.commands.find('zerohd')
|
result = self.commands.find('zerohd')
|
||||||
|
@ -78,7 +78,7 @@ class TestCommands(TestCase):
|
||||||
|
|
||||||
def test_delete(self):
|
def test_delete(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
self.commands.addshop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
self.commands.delete('frick', discord_uuid='143072699567177728')
|
self.commands.delete('frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ class TestCommands(TestCase):
|
||||||
|
|
||||||
def test_findaround(self):
|
def test_findaround(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
self.commands.addshop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
result = self.commands.findaround(0, 0)
|
result = self.commands.findaround(0, 0)
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ class TestCommands(TestCase):
|
||||||
else:
|
else:
|
||||||
self.fail()
|
self.fail()
|
||||||
|
|
||||||
self.commands.addshop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
result = self.commands.additem('cool', 5, 5, shop_name='frick', discord_uuid='143072699567177728')
|
result = self.commands.additem('cool', 5, 5, shop_name='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ class TestCommands(TestCase):
|
||||||
|
|
||||||
def test_selling(self):
|
def test_selling(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
self.commands.addshop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
self.commands.additem('cool', 5, 5, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.additem('cool', 5, 5, shop_name='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
|
@ -131,9 +131,9 @@ class TestCommands(TestCase):
|
||||||
|
|
||||||
def test_info(self):
|
def test_info(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
self.commands.addshop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
|
self.commands.addshop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
self.commands.tunnel('Green', 50, location_name='frick', discord_uuid='143072699567177728')
|
self.commands.addtunnel('Green', 50, location_name='frick', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
result = self.commands.info('frick')
|
result = self.commands.info('frick')
|
||||||
|
|
||||||
|
@ -141,3 +141,16 @@ class TestCommands(TestCase):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
self.fail()
|
self.fail()
|
||||||
|
|
||||||
|
def test_tunnel(self):
|
||||||
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
|
self.commands.addshop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
|
||||||
|
|
||||||
|
tunnel = self.commands.addtunnel('green', 50, None, discord_uuid='143072699567177728')
|
||||||
|
|
||||||
|
result = self.commands.tunnel('ZeroHD')
|
||||||
|
|
||||||
|
if 'Green' in result:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self.fail()
|
||||||
|
|
Loading…
Reference in New Issue