Cleaned up code and added name exceptions to the config files
parent
1474cc54ce
commit
9723fa6b9a
|
@ -1,4 +1,5 @@
|
||||||
import configparser
|
import configparser
|
||||||
|
import codecs
|
||||||
|
|
||||||
|
|
||||||
def create_config(config):
|
def create_config(config):
|
||||||
|
@ -27,7 +28,7 @@ def create_config(config):
|
||||||
|
|
||||||
def read_config():
|
def read_config():
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.read('GeoffreyConfig.ini')
|
config.read_file(codecs.open("GeoffreyConfig.ini", "r", "utf8"))
|
||||||
|
|
||||||
if len(config.sections()) == 0:
|
if len(config.sections()) == 0:
|
||||||
create_config(config)
|
create_config(config)
|
||||||
|
@ -51,6 +52,7 @@ class Config:
|
||||||
self.bot_mod = self.config['Discord']['Bot_Mod']
|
self.bot_mod = self.config['Discord']['Bot_Mod']
|
||||||
self.count = int(self.config['Logging']['Count'])
|
self.count = int(self.config['Logging']['Count'])
|
||||||
self.rotation_duration = int(self.config['Logging']['Rotation_Duration'])
|
self.rotation_duration = int(self.config['Logging']['Rotation_Duration'])
|
||||||
|
self.special_name_list = dict(self.config.items('Special Names'))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Invalid config file, missing {}.".format(e))
|
print("Invalid config file, missing {}.".format(e))
|
||||||
quit(1)
|
quit(1)
|
||||||
|
|
46
BotErrors.py
46
BotErrors.py
|
@ -1,57 +1,75 @@
|
||||||
class DataBaseError(Exception):
|
class DataBaseError(Exception):
|
||||||
'''Base class for exceptions in this module.'''
|
"""Base class for exceptions in this module."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class LocationInitError(DataBaseError):
|
class LocationInitError(DataBaseError):
|
||||||
'''Error in initializing Location'''
|
"""Error in initializing Location"""
|
||||||
|
|
||||||
|
|
||||||
class TunnelInitError(DataBaseError):
|
class TunnelInitError(DataBaseError):
|
||||||
'''Error in initializing Tunnel'''
|
"""Error in initializing Tunnel"""
|
||||||
|
|
||||||
|
|
||||||
class NoMatchFoundError(DataBaseError):
|
class NoMatchFoundError(DataBaseError):
|
||||||
'''No matches were found in the database'''
|
"""No matches were found in the database"""
|
||||||
|
|
||||||
|
|
||||||
class LocationLookUpError(DataBaseError):
|
class LocationLookUpError(DataBaseError):
|
||||||
'''Error in finding location in database'''
|
"""Error in finding location in database"""
|
||||||
|
|
||||||
|
|
||||||
class DeleteEntryError(DataBaseError):
|
class DeleteEntryError(DataBaseError):
|
||||||
'''Error in deleting entry'''
|
"""Error in deleting entry"""
|
||||||
|
|
||||||
|
|
||||||
class UsernameLookupFailed(Exception):
|
class UsernameLookupFailed(Exception):
|
||||||
'''Error in username lookup, is the player's nickname set correctly? *stares at aeskdar*'''
|
"""Error in username lookup, is the player's nickname set correctly? *stares at aeskdar*"""
|
||||||
|
|
||||||
|
|
||||||
class PlayerNotFound(DataBaseError):
|
class PlayerNotFound(DataBaseError):
|
||||||
'''Player not found in database.'''
|
"""Player not found in database."""
|
||||||
|
|
||||||
|
|
||||||
class EntryNameNotUniqueError(DataBaseError):
|
class EntryNameNotUniqueError(DataBaseError):
|
||||||
'''A location by that name is already in the database.'''
|
"""A location by that name is already in the database."""
|
||||||
|
|
||||||
|
|
||||||
class StringTooLong(DataBaseError):
|
class StringTooLong(DataBaseError):
|
||||||
'''Given string is too long.'''
|
"""Given string is too long."""
|
||||||
|
|
||||||
|
|
||||||
class DatabaseValueError(DataBaseError):
|
class DatabaseValueError(DataBaseError):
|
||||||
''''String too long or number too large'''
|
"""'String too long or number too large"""
|
||||||
|
|
||||||
|
|
||||||
class ItemNotFound(DataBaseError):
|
class ItemNotFound(DataBaseError):
|
||||||
'''No item matches found in database'''
|
"""No item matches found in database"""
|
||||||
|
|
||||||
|
|
||||||
class InvalidDimError(DataBaseError):
|
class InvalidDimError(DataBaseError):
|
||||||
"""Invalid dimension name"""
|
"""Invalid dimension name"""
|
||||||
|
|
||||||
|
|
||||||
class InvalidTunnelError(DataBaseError):
|
class InvalidTunnelError(DataBaseError):
|
||||||
"""Invalid tunnel name"""
|
"""Invalid tunnel name"""
|
||||||
|
|
||||||
|
|
||||||
class PlayerInDBError(DataBaseError):
|
class PlayerInDBError(DataBaseError):
|
||||||
"""Player already registered in database"""
|
"""Player already registered in database"""
|
||||||
|
|
||||||
|
|
||||||
class LocationHasTunnelError(DataBaseError):
|
class LocationHasTunnelError(DataBaseError):
|
||||||
"""That location already has a tunnel"""
|
"""That location already has a tunnel"""
|
||||||
|
|
||||||
|
|
||||||
class NoPermissionError(DataBaseError):
|
class NoPermissionError(DataBaseError):
|
||||||
"""You have no permission to run this command"""
|
"""You have no permission to run this command"""
|
||||||
|
|
||||||
|
|
||||||
class NotOnServerError(DataBaseError):
|
class NotOnServerError(DataBaseError):
|
||||||
'''You need to run this command on 24CC'''
|
"""You need to run this command on 24CC"""
|
||||||
|
|
||||||
|
|
||||||
class FuckyWucky:
|
class FuckyWucky:
|
||||||
'''You made one.'''
|
"""You made one."""
|
||||||
|
|
|
@ -372,5 +372,3 @@ class Commands:
|
||||||
raise e
|
raise e
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ class DatabaseInterface:
|
||||||
if len(locations) == limit:
|
if len(locations) == limit:
|
||||||
loc_string = loc_string + '\n**. . .**'
|
loc_string = loc_string + '\n**. . .**'
|
||||||
|
|
||||||
expr = Tunnel.owner.has(Player.name.ilike('%{}%'.format(search))) & Tunnel.location == None
|
expr = Tunnel.owner.has(Player.name.ilike('%{}%'.format(search))) & Tunnel.location is None
|
||||||
tunnels = self.database.query_by_filter(session, Tunnel, expr)
|
tunnels = self.database.query_by_filter(session, Tunnel, expr)
|
||||||
|
|
||||||
if len(tunnels) > 0:
|
if len(tunnels) > 0:
|
||||||
|
@ -200,4 +200,4 @@ def list_to_string(loc_list, str_format='{}\n{}'):
|
||||||
for loc in loc_list:
|
for loc in loc_list:
|
||||||
loc_string = str_format.format(loc_string, loc)
|
loc_string = str_format.format(loc_string, loc)
|
||||||
|
|
||||||
return loc_string
|
return loc_string
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
from itertools import zip_longest
|
from itertools import zip_longest
|
||||||
|
from BotConfig import bot_config
|
||||||
|
|
||||||
|
|
||||||
def get_name(args):
|
def get_name(args):
|
||||||
if len(args) > 0:
|
if len(args) > 0:
|
||||||
|
@ -8,19 +10,21 @@ def get_name(args):
|
||||||
|
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
|
||||||
def get_nickname(discord_user):
|
def get_nickname(discord_user):
|
||||||
if discord_user.nick is None:
|
if discord_user.nick is None:
|
||||||
name = discord_user.display_name
|
name = discord_user.display_name
|
||||||
else:
|
else:
|
||||||
name = discord_user.nick
|
name = discord_user.nick
|
||||||
|
|
||||||
if name == 'dootb.in ꙩ ⃤':
|
if name in bot_config.special_name_list:
|
||||||
name = 'aeskdar'
|
return bot_config.special_name_list[name]
|
||||||
|
else:
|
||||||
|
return name
|
||||||
|
|
||||||
return name
|
|
||||||
|
|
||||||
def get_args_dict(args):
|
def get_args_dict(args):
|
||||||
if len(args) != 0:
|
if len(args) != 0:
|
||||||
return dict(zip_longest(*[iter(args)] * 2, fillvalue=" "))
|
return dict(zip_longest(*[iter(args)] * 2, fillvalue=" "))
|
||||||
else:
|
else:
|
||||||
return {}
|
return {}
|
||||||
|
|
|
@ -28,10 +28,7 @@ def setup_logging():
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
print("Starting logging...")
|
||||||
setup_logging()
|
setup_logging()
|
||||||
|
print("Starting bot...")
|
||||||
start_bot()
|
start_bot()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ import requests
|
||||||
from json import JSONDecodeError
|
from json import JSONDecodeError
|
||||||
from BotErrors import UsernameLookupFailed
|
from BotErrors import UsernameLookupFailed
|
||||||
|
|
||||||
|
|
||||||
uuid_lookup_url = 'https://api.mojang.com/users/profiles/minecraft/{}'
|
uuid_lookup_url = 'https://api.mojang.com/users/profiles/minecraft/{}'
|
||||||
username_lookup_url = 'https://api.mojang.com/user/profiles/{}/names'
|
username_lookup_url = 'https://api.mojang.com/user/profiles/{}/names'
|
||||||
|
|
||||||
|
@ -18,17 +17,18 @@ def grab_json(url):
|
||||||
|
|
||||||
return json
|
return json
|
||||||
|
|
||||||
|
|
||||||
def grab_UUID(username):
|
def grab_UUID(username):
|
||||||
player_data = grab_json(uuid_lookup_url.format(username))
|
player_data = grab_json(uuid_lookup_url.format(username))
|
||||||
return player_data['id']
|
return player_data['id']
|
||||||
|
|
||||||
|
|
||||||
def grab_playername(uuid):
|
def grab_playername(uuid):
|
||||||
player_data = grab_json(username_lookup_url.format(uuid))
|
player_data = grab_json(username_lookup_url.format(uuid))
|
||||||
|
|
||||||
if len(player_data) == 0:
|
if len(player_data) == 0:
|
||||||
raise UsernameLookupFailed
|
raise UsernameLookupFailed
|
||||||
else:
|
else:
|
||||||
last_index = len(player_data)-1
|
last_index = len(player_data) - 1
|
||||||
|
|
||||||
return player_data[last_index]['name']
|
return player_data[last_index]['name']
|
||||||
|
|
||||||
|
|
4
bot.py
4
bot.py
|
@ -112,5 +112,5 @@ def start_bot():
|
||||||
bot.run(bot_config.token)
|
bot.run(bot_config.token)
|
||||||
except TimeoutError:
|
except TimeoutError:
|
||||||
print("Disconnected, is Discord offline?")
|
print("Disconnected, is Discord offline?")
|
||||||
except:
|
finally:
|
||||||
print("Bye")
|
print("Bot shutting down...")
|
||||||
|
|
|
@ -6,20 +6,21 @@ from bot import bot_commands
|
||||||
|
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
class Add_Commands:
|
class Add_Commands:
|
||||||
'''
|
"""
|
||||||
Commands for adding things to Geoffrey.
|
Commands for adding things to Geoffrey.
|
||||||
*You must use ?register before using any of these commands!*
|
*You must use ?register before using any of these commands!*
|
||||||
'''
|
"""
|
||||||
|
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def register(self, ctx):
|
async def register(self, ctx):
|
||||||
'''
|
"""
|
||||||
Registers your Discord and Minecraft account with the the database.
|
Registers your Discord and Minecraft account with the the database.
|
||||||
You must do this before adding entries to the database.
|
You must do this before adding entries to the database.
|
||||||
'''
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
player_name = get_nickname(ctx.message.author)
|
player_name = get_nickname(ctx.message.author)
|
||||||
|
@ -33,11 +34,11 @@ class Add_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def add_base(self, ctx, x_pos: int, z_pos: int, *args):
|
async def add_base(self, ctx, x_pos: int, z_pos: int, *args):
|
||||||
'''
|
"""
|
||||||
Adds your base to the database.
|
Adds your base to the database.
|
||||||
The name is optional.
|
The name is optional.
|
||||||
?add_base [X Coordinate] [Z Coordinate] [Base Name]
|
?add_base [X Coordinate] [Z Coordinate] [Base Name]
|
||||||
'''
|
"""
|
||||||
|
|
||||||
name = get_name(args)
|
name = get_name(args)
|
||||||
|
|
||||||
|
@ -50,19 +51,20 @@ class Add_Commands:
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
if name is None:
|
if name is None:
|
||||||
await self.bot.say('{}, you already have one base in the database, you need to specify a base'
|
await self.bot.say('{}, you already have one base in the database, you need to specify a base'
|
||||||
' name'.format(ctx.message.author.mention))
|
' name'.format(ctx.message.author.mention))
|
||||||
else:
|
else:
|
||||||
await self.bot.say('{}, a base called **{}** already exists. You need to specify a different name.'.format(
|
await self.bot.say(
|
||||||
ctx.message.author.mention, name))
|
'{}, a base called **{}** already exists. You need to specify a different name.'.format(
|
||||||
|
ctx.message.author.mention, name))
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def add_shop(self, ctx, x_pos: int, z_pos: int, *args):
|
async def add_shop(self, ctx, x_pos: int, z_pos: int, *args):
|
||||||
'''
|
"""
|
||||||
Adds your shop to the database.
|
Adds your shop to the database.
|
||||||
The name is optional.
|
The name is optional.
|
||||||
?add_shop [X Coordinate] [Z Coordinate] [Shop Name]
|
?add_shop [X Coordinate] [Z Coordinate] [Shop Name]
|
||||||
'''
|
"""
|
||||||
|
|
||||||
name = get_name(args)
|
name = get_name(args)
|
||||||
|
|
||||||
|
@ -74,19 +76,21 @@ class Add_Commands:
|
||||||
raise commands.UserInputError
|
raise commands.UserInputError
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
if name is None:
|
if name is None:
|
||||||
await self.bot.say('{}, you already have one shop in the database, you need to specify a shop name'.format(
|
await self.bot.say(
|
||||||
ctx.message.author.mention))
|
'{}, you already have one shop in the database, you need to specify a shop name'.format(
|
||||||
|
ctx.message.author.mention))
|
||||||
else:
|
else:
|
||||||
await self.bot.say('{}, a shop called **{}** already exists. You need to specify a different name.'.format(
|
await self.bot.say(
|
||||||
ctx.message.author.mention, name))
|
'{}, a shop called **{}** already exists. You need to specify a different name.'.format(
|
||||||
|
ctx.message.author.mention, name))
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def add_tunnel(self, ctx, tunnel_color: str, tunnel_number: int, *args):
|
async def add_tunnel(self, ctx, tunnel_color: str, tunnel_number: int, *args):
|
||||||
'''
|
"""
|
||||||
Adds your tunnel to the database. If you only have one location, you do not need to specify a location name.
|
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]
|
||||||
'''
|
"""
|
||||||
|
|
||||||
loc_name = get_name(args)
|
loc_name = get_name(args)
|
||||||
try:
|
try:
|
||||||
|
@ -102,29 +106,31 @@ class Add_Commands:
|
||||||
await self.bot.say('{}, invalid tunnel color.'.format(ctx.message.author.mention))
|
await self.bot.say('{}, invalid tunnel color.'.format(ctx.message.author.mention))
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
await self.bot.say('{}, you have more than one location, you need to specify a location.'
|
await self.bot.say('{}, you have more than one location, you need to specify a location.'
|
||||||
.format(ctx.message.author.mention))
|
.format(ctx.message.author.mention))
|
||||||
except InvalidTunnelError:
|
except InvalidTunnelError:
|
||||||
await self.bot.say('{}, **{}** is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
|
await self.bot.say(
|
||||||
|
'{}, **{}** is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def add_item(self, ctx, item_name: str, quantity: int, diamond_price: int, *args):
|
async def add_item(self, ctx, item_name: str, quantity: int, diamond_price: int, *args):
|
||||||
'''
|
"""
|
||||||
Adds an item to a shop's inventory.
|
Adds an item to a shop's inventory.
|
||||||
Quantity for Diamond Price.
|
Quantity for Diamond Price.
|
||||||
?additem [Item Name] [Quantity] [Price] [Shop name]
|
?additem [Item Name] [Quantity] [Price] [Shop name]
|
||||||
'''
|
"""
|
||||||
shop_name = get_name(args)
|
shop_name = get_name(args)
|
||||||
try:
|
try:
|
||||||
bot_commands.add_item(item_name, quantity, diamond_price, shop_name=shop_name,
|
bot_commands.add_item(item_name, quantity, diamond_price, shop_name=shop_name,
|
||||||
discord_uuid=ctx.message.author.id)
|
discord_uuid=ctx.message.author.id)
|
||||||
await self.bot.say('{}, **{}** has been added to the inventory of your shop.'.format(ctx.message.author.mention,
|
await self.bot.say(
|
||||||
item_name))
|
'{}, **{}** has been added to the inventory of your shop.'.format(ctx.message.author.mention,
|
||||||
|
item_name))
|
||||||
except PlayerNotFound:
|
except PlayerNotFound:
|
||||||
await self.bot.say('{}, you don\'t have any shops in the database.'.format(ctx.message.author.mention))
|
await self.bot.say('{}, you don\'t have any shops in the database.'.format(ctx.message.author.mention))
|
||||||
except LocationInitError:
|
except LocationInitError:
|
||||||
await self.bot.say('{}, you have more than one shop in the database, please specify a shop name.'
|
await self.bot.say('{}, you have more than one shop in the database, please specify a shop name.'
|
||||||
.format(ctx.message.author.mention))
|
.format(ctx.message.author.mention))
|
||||||
except LocationLookUpError:
|
except LocationLookUpError:
|
||||||
await self.bot.say(
|
await self.bot.say(
|
||||||
'{}, you don\'t have any shops named **{}** in the database.'.format(ctx.message.author.mention,
|
'{}, you don\'t have any shops named **{}** in the database.'.format(ctx.message.author.mention,
|
||||||
|
@ -132,4 +138,4 @@ class Add_Commands:
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(Add_Commands(bot))
|
bot.add_cog(Add_Commands(bot))
|
||||||
|
|
|
@ -17,9 +17,9 @@ def check_mod(user):
|
||||||
|
|
||||||
|
|
||||||
class Admin_Commands:
|
class Admin_Commands:
|
||||||
'''
|
"""
|
||||||
Commands for cool people only.
|
Commands for cool people only.
|
||||||
'''
|
"""
|
||||||
|
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
@ -36,9 +36,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
async def test(self, ctx):
|
async def test(self, ctx):
|
||||||
'''
|
"""
|
||||||
Checks if the bot is alive.
|
Checks if the bot is alive.
|
||||||
'''
|
"""
|
||||||
if check_mod(ctx.message.author):
|
if check_mod(ctx.message.author):
|
||||||
await self.bot.say('I\'m here you ding dong')
|
await self.bot.say('I\'m here you ding dong')
|
||||||
else:
|
else:
|
||||||
|
@ -46,9 +46,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@commands.group(pass_context=True)
|
@commands.group(pass_context=True)
|
||||||
async def mod(self, ctx):
|
async def mod(self, ctx):
|
||||||
'''
|
"""
|
||||||
Bot moderation tools.
|
Bot moderation tools.
|
||||||
'''
|
"""
|
||||||
if check_mod(ctx.message.author):
|
if check_mod(ctx.message.author):
|
||||||
if ctx.invoked_subcommand is None:
|
if ctx.invoked_subcommand is None:
|
||||||
await self.bot.say('{}, invalid sub-command for command **mod**.'.format(ctx.message.author.mention))
|
await self.bot.say('{}, invalid sub-command for command **mod**.'.format(ctx.message.author.mention))
|
||||||
|
@ -57,9 +57,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@mod.command(pass_context=True)
|
@mod.command(pass_context=True)
|
||||||
async def delete(self, ctx, discord_uuid: str, location_name: str):
|
async def delete(self, ctx, discord_uuid: str, location_name: str):
|
||||||
'''
|
"""
|
||||||
Deletes a location in the database/
|
Deletes a location in the database/
|
||||||
'''
|
"""
|
||||||
bot_commands.delete(location_name, discord_uuid=discord_uuid)
|
bot_commands.delete(location_name, discord_uuid=discord_uuid)
|
||||||
await self.bot.say('{}, **{}** has been deleted.'.format(ctx.message.author.mention, location_name))
|
await self.bot.say('{}, **{}** has been deleted.'.format(ctx.message.author.mention, location_name))
|
||||||
|
|
||||||
|
@ -69,9 +69,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@mod.command(pass_context=True)
|
@mod.command(pass_context=True)
|
||||||
async def edit_name(self, ctx, discord_uuid: str, new_name: str, current_name: str):
|
async def edit_name(self, ctx, discord_uuid: str, new_name: str, current_name: str):
|
||||||
'''
|
"""
|
||||||
Edits the name of a location in the database.
|
Edits the name of a location in the database.
|
||||||
'''
|
"""
|
||||||
bot_commands.edit_name(new_name, current_name, discord_uuid=discord_uuid)
|
bot_commands.edit_name(new_name, current_name, discord_uuid=discord_uuid)
|
||||||
await self.bot.say('{}, **{}** has been rename to **{}**.'.format(ctx.message.author.mention, current_name,
|
await self.bot.say('{}, **{}** has been rename to **{}**.'.format(ctx.message.author.mention, current_name,
|
||||||
new_name))
|
new_name))
|
||||||
|
@ -82,9 +82,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@mod.command(pass_context=True)
|
@mod.command(pass_context=True)
|
||||||
async def update_mc_uuid(self, ctx, discord_uuid: str, mc_uuid: str):
|
async def update_mc_uuid(self, ctx, discord_uuid: str, mc_uuid: str):
|
||||||
'''
|
"""
|
||||||
Updates a user's MC UUID
|
Updates a user's MC UUID
|
||||||
'''
|
"""
|
||||||
bot_commands.update_mc_uuid(discord_uuid, mc_uuid)
|
bot_commands.update_mc_uuid(discord_uuid, mc_uuid)
|
||||||
await self.bot.say('{}, **{}** has been updated.'.format(ctx.message.author.mention, discord_uuid))
|
await self.bot.say('{}, **{}** has been updated.'.format(ctx.message.author.mention, discord_uuid))
|
||||||
|
|
||||||
|
@ -94,9 +94,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@mod.command(pass_context=True)
|
@mod.command(pass_context=True)
|
||||||
async def update_discord_uuid(self, ctx, current_discord_uuid: str, new_discord_uuid: str):
|
async def update_discord_uuid(self, ctx, current_discord_uuid: str, new_discord_uuid: str):
|
||||||
'''
|
"""
|
||||||
Updates a user's Discord UUID
|
Updates a user's Discord UUID
|
||||||
'''
|
"""
|
||||||
bot_commands.update_mc_uuid(current_discord_uuid, new_discord_uuid)
|
bot_commands.update_mc_uuid(current_discord_uuid, new_discord_uuid)
|
||||||
await self.bot.say('{}, user **{}** has been updated.'.format(ctx.message.author.mention, current_discord_uuid))
|
await self.bot.say('{}, user **{}** has been updated.'.format(ctx.message.author.mention, current_discord_uuid))
|
||||||
|
|
||||||
|
@ -106,9 +106,9 @@ class Admin_Commands:
|
||||||
|
|
||||||
@mod.command(pass_context=True)
|
@mod.command(pass_context=True)
|
||||||
async def update_mc_name(self, ctx, discord_uuid: str):
|
async def update_mc_name(self, ctx, discord_uuid: str):
|
||||||
'''
|
"""
|
||||||
Updates a user's MC name to the current name on the MC UUID
|
Updates a user's MC name to the current name on the MC UUID
|
||||||
'''
|
"""
|
||||||
bot_commands.update_mc_name(discord_uuid)
|
bot_commands.update_mc_name(discord_uuid)
|
||||||
await self.bot.say('{}, user **{}**\'s MC name has update.'.format(ctx.message.author.mention, discord_uuid))
|
await self.bot.say('{}, user **{}**\'s MC name has update.'.format(ctx.message.author.mention, discord_uuid))
|
||||||
|
|
||||||
|
@ -118,12 +118,12 @@ class Admin_Commands:
|
||||||
|
|
||||||
@mod.command(pass_context=True)
|
@mod.command(pass_context=True)
|
||||||
async def status(self, ctx, status: str):
|
async def status(self, ctx, status: str):
|
||||||
'''
|
"""
|
||||||
Updates playing game status of the bot
|
Updates playing game status of the bot
|
||||||
'''
|
"""
|
||||||
await self.bot.change_presence(game=Game(name=status))
|
await self.bot.change_presence(game=Game(name=status))
|
||||||
await self.bot.say('{}, status has been changed'.format(ctx.message.author.mention))
|
await self.bot.say('{}, status has been changed'.format(ctx.message.author.mention))
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(Admin_Commands(bot))
|
bot.add_cog(Admin_Commands(bot))
|
||||||
|
|
|
@ -4,23 +4,22 @@ from DiscordHelperFunctions import *
|
||||||
from bot import bot_commands
|
from bot import bot_commands
|
||||||
|
|
||||||
|
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
|
||||||
class Delete_Commands:
|
class Delete_Commands:
|
||||||
'''
|
"""
|
||||||
Commands to help Geoffrey forget.
|
Commands to help Geoffrey forget.
|
||||||
|
|
||||||
*You must use ?register before using any of these commands!*
|
*You must use ?register before using any of these commands!*
|
||||||
'''
|
"""
|
||||||
|
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
async def delete(self, ctx, *args):
|
async def delete(self, ctx, *args):
|
||||||
'''
|
"""
|
||||||
Deletes a location from the database.
|
Deletes a location from the database.
|
||||||
?delete [Location name]
|
?delete [Location name]
|
||||||
'''
|
"""
|
||||||
loc = get_name(args)
|
loc = get_name(args)
|
||||||
try:
|
try:
|
||||||
if loc is None:
|
if loc is None:
|
||||||
|
@ -34,18 +33,18 @@ class Delete_Commands:
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
async def delete_item(self, ctx, item: str, *args):
|
async def delete_item(self, ctx, item: str, *args):
|
||||||
'''
|
"""
|
||||||
Deletes an item listing from a shop inventory
|
Deletes an item listing from a shop inventory
|
||||||
|
|
||||||
?delete_name [Item] [Shop Name]
|
?delete_name [Item] [Shop Name]
|
||||||
'''
|
"""
|
||||||
|
|
||||||
shop = get_name(args)
|
shop = get_name(args)
|
||||||
try:
|
try:
|
||||||
bot_commands.delete_item(item, shop, discord_uuid=ctx.message.author.id)
|
bot_commands.delete_item(item, shop, discord_uuid=ctx.message.author.id)
|
||||||
|
|
||||||
await self.bot.say('{}, **{}** has been removed from the inventory of **{}**.'.
|
await self.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:
|
if shop is None:
|
||||||
await self.bot.say('{}, you do have any shops in the database.'.format(ctx.message.author.mention))
|
await self.bot.say('{}, you do have any shops in the database.'.format(ctx.message.author.mention))
|
||||||
|
@ -53,7 +52,7 @@ class Delete_Commands:
|
||||||
await self.bot.say('{}, you do not have a shop called **{}**.'.format(ctx.message.author.mention, shop))
|
await self.bot.say('{}, you do not have a shop called **{}**.'.format(ctx.message.author.mention, shop))
|
||||||
except EntryNameNotUniqueError:
|
except EntryNameNotUniqueError:
|
||||||
await self.bot.say('{}, you have more than one shop in the database, please specify a shop name.'
|
await self.bot.say('{}, you have more than one shop in the database, please specify a shop name.'
|
||||||
.format(ctx.message.author.mention))
|
.format(ctx.message.author.mention))
|
||||||
except DeleteEntryError:
|
except DeleteEntryError:
|
||||||
if shop is not None:
|
if shop is not None:
|
||||||
await self.bot.say('{}, **{}** does not sell **{}**.'.format(ctx.message.author.mention, shop, item))
|
await self.bot.say('{}, **{}** does not sell **{}**.'.format(ctx.message.author.mention, shop, item))
|
||||||
|
|
|
@ -12,11 +12,11 @@ class Edit_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def edit_pos(self, ctx, x_pos: int, y_pos: int, *args):
|
async def edit_pos(self, ctx, x_pos: int, y_pos: int, *args):
|
||||||
'''
|
"""
|
||||||
Edits the position of a location
|
Edits the position of a location
|
||||||
|
|
||||||
?edit_pos [X Coordinate] [Z Coordinate] [Location Name]
|
?edit_pos [X Coordinate] [Z Coordinate] [Location Name]
|
||||||
'''
|
"""
|
||||||
loc = get_name(args)
|
loc = get_name(args)
|
||||||
try:
|
try:
|
||||||
loc_str = bot_commands.edit_pos(x_pos, y_pos, loc, discord_uuid=ctx.message.author.id)
|
loc_str = bot_commands.edit_pos(x_pos, y_pos, loc, discord_uuid=ctx.message.author.id)
|
||||||
|
@ -30,11 +30,11 @@ class Edit_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def edit_tunnel(self, ctx, tunnel_color: str, tunnel_number: int, *args):
|
async def edit_tunnel(self, ctx, tunnel_color: str, tunnel_number: int, *args):
|
||||||
'''
|
"""
|
||||||
Edits the tunnel of a location
|
Edits the tunnel of a location
|
||||||
|
|
||||||
?edit_tunnel [Tunnel Color] [Tunnel Number] [Location Name]
|
?edit_tunnel [Tunnel Color] [Tunnel Number] [Location Name]
|
||||||
'''
|
"""
|
||||||
loc = get_name(args)
|
loc = get_name(args)
|
||||||
try:
|
try:
|
||||||
loc_str = bot_commands.edit_tunnel(tunnel_color, tunnel_number, loc, discord_uuid=ctx.message.author.id)
|
loc_str = bot_commands.edit_tunnel(tunnel_color, tunnel_number, loc, discord_uuid=ctx.message.author.id)
|
||||||
|
@ -45,17 +45,18 @@ class Edit_Commands:
|
||||||
await self.bot.say('{}, you do not have a location called **{}**.'.format(
|
await self.bot.say('{}, you do not have a location called **{}**.'.format(
|
||||||
ctx.message.author.mention, loc))
|
ctx.message.author.mention, loc))
|
||||||
except InvalidTunnelError:
|
except InvalidTunnelError:
|
||||||
await self.bot.say('{}, **{}** is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
|
await self.bot.say(
|
||||||
|
'{}, **{}** is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
|
||||||
|
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def edit_name(self, ctx, new_name: str, current_name: str):
|
async def edit_name(self, ctx, new_name: str, current_name: str):
|
||||||
'''
|
"""
|
||||||
Edits the name of a location
|
Edits the name of a location
|
||||||
|
|
||||||
IF A NAME HAS SPACES IN IT YOU NEED TO WRAP IT IN QUOTATION MARKS. ie "Cool Shop 123"
|
IF A NAME HAS SPACES IN IT YOU NEED TO WRAP IT IN QUOTATION MARKS. ie "Cool Shop 123"
|
||||||
?edit_name [New Name] [Current Name]
|
?edit_name [New Name] [Current Name]
|
||||||
'''
|
"""
|
||||||
try:
|
try:
|
||||||
loc_str = bot_commands.edit_name(new_name, current_name, discord_uuid=ctx.message.author.id)
|
loc_str = bot_commands.edit_name(new_name, current_name, discord_uuid=ctx.message.author.id)
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ from bot import bot_commands
|
||||||
|
|
||||||
|
|
||||||
class Search_Commands:
|
class Search_Commands:
|
||||||
'''
|
"""
|
||||||
Commands to find stuff.
|
Commands to find stuff.
|
||||||
'''
|
"""
|
||||||
|
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
@ -15,10 +15,10 @@ class Search_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def find(self, ctx, * args):
|
async def find(self, ctx, * args):
|
||||||
'''
|
"""
|
||||||
Finds all the locations and tunnels matching the search term
|
Finds all the locations and tunnels matching the search term
|
||||||
?find [Search]
|
?find [Search]
|
||||||
'''
|
"""
|
||||||
search = get_name(args)
|
search = get_name(args)
|
||||||
try:
|
try:
|
||||||
|
|
||||||
|
@ -35,10 +35,10 @@ class Search_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def tunnel(self, ctx, player: str):
|
async def tunnel(self, ctx, player: str):
|
||||||
'''
|
"""
|
||||||
Finds all the tunnels a player owns.
|
Finds all the tunnels a player owns.
|
||||||
?tunnel [Player]
|
?tunnel [Player]
|
||||||
'''
|
"""
|
||||||
try:
|
try:
|
||||||
result = bot_commands.tunnel(player)
|
result = bot_commands.tunnel(player)
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class Search_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def find_around(self, ctx, x_pos: int, z_pos: int, * args):
|
async def find_around(self, ctx, x_pos: int, z_pos: int, * args):
|
||||||
'''
|
"""
|
||||||
Finds all the locations around a certain point.
|
Finds all the locations around a certain point.
|
||||||
The radius defaults to 200 blocks if no value is given.
|
The radius defaults to 200 blocks if no value is given.
|
||||||
Default dimension is overworld.
|
Default dimension is overworld.
|
||||||
|
@ -60,7 +60,7 @@ class Search_Commands:
|
||||||
|
|
||||||
Optional Flags:
|
Optional Flags:
|
||||||
-d [dimension]
|
-d [dimension]
|
||||||
'''
|
"""
|
||||||
radius = 200
|
radius = 200
|
||||||
dimension = 'Overworld'
|
dimension = 'Overworld'
|
||||||
|
|
||||||
|
@ -94,11 +94,11 @@ class Search_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def selling(self, ctx, item_name: str):
|
async def selling(self, ctx, item_name: str):
|
||||||
'''
|
"""
|
||||||
Lists all the shops selling an item
|
Lists all the shops selling an item
|
||||||
|
|
||||||
?selling [item]
|
?selling [item]
|
||||||
'''
|
"""
|
||||||
try:
|
try:
|
||||||
result = bot_commands.selling(item_name)
|
result = bot_commands.selling(item_name)
|
||||||
await self.bot.say('{}, the following shops sell **{}**: \n{}'.format(ctx.message.author.mention, item_name, result))
|
await self.bot.say('{}, the following shops sell **{}**: \n{}'.format(ctx.message.author.mention, item_name, result))
|
||||||
|
@ -108,13 +108,13 @@ class Search_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def info(self, ctx, * args):
|
async def info(self, ctx, * args):
|
||||||
'''
|
"""
|
||||||
Displays info about a location.
|
Displays info about a location.
|
||||||
|
|
||||||
If the location is a shop, it displays the shop's inventory.
|
If the location is a shop, it displays the shop's inventory.
|
||||||
|
|
||||||
?info [Location Name]
|
?info [Location Name]
|
||||||
'''
|
"""
|
||||||
loc = get_name(args)
|
loc = get_name(args)
|
||||||
try:
|
try:
|
||||||
|
|
||||||
|
@ -129,9 +129,9 @@ class Search_Commands:
|
||||||
@commands.command(pass_context=True)
|
@commands.command(pass_context=True)
|
||||||
@commands.cooldown(5, 60, commands.BucketType.user)
|
@commands.cooldown(5, 60, commands.BucketType.user)
|
||||||
async def me(self, ctx):
|
async def me(self, ctx):
|
||||||
'''
|
"""
|
||||||
Displays all your locations in the database
|
Displays all your locations in the database
|
||||||
'''
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
loc_str = bot_commands.me(discord_uuid=ctx.message.author.id)
|
loc_str = bot_commands.me(discord_uuid=ctx.message.author.id)
|
||||||
|
|
|
@ -139,7 +139,7 @@ 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')
|
||||||
|
|
||||||
tunnel = self.commands.add_tunnel('green', 50, None, discord_uuid='143072699567177728')
|
self.commands.add_tunnel('green', 50, None, discord_uuid='143072699567177728')
|
||||||
|
|
||||||
result = self.commands.tunnel('ZeroHD')
|
result = self.commands.tunnel('ZeroHD')
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ class TestCommands(TestCase):
|
||||||
self.commands.update_mc_uuid('0', '143072699567177728')
|
self.commands.update_mc_uuid('0', '143072699567177728')
|
||||||
|
|
||||||
self.assertRaises(PlayerNotFound, self.commands.add_shop, 0, 0, shop_name='test shop',
|
self.assertRaises(PlayerNotFound, self.commands.add_shop, 0, 0, shop_name='test shop',
|
||||||
mc_uuid='fe7e84132570458892032b69ff188bc3')
|
mc_uuid='fe7e84132570458892032b69ff188bc3')
|
||||||
|
|
||||||
def test_update_mc_name(self):
|
def test_update_mc_name(self):
|
||||||
self.commands.register('ZeroHD', '143072699567177728')
|
self.commands.register('ZeroHD', '143072699567177728')
|
||||||
|
@ -253,4 +253,4 @@ class TestCommands(TestCase):
|
||||||
self.commands.update_discord_uuid('143072699567177728', '0')
|
self.commands.update_discord_uuid('143072699567177728', '0')
|
||||||
|
|
||||||
self.assertRaises(PlayerNotFound, self.commands.add_shop, 0, 0, shop_name='test shop',
|
self.assertRaises(PlayerNotFound, self.commands.add_shop, 0, 0, shop_name='test shop',
|
||||||
discord_uuid='143072699567177728')
|
discord_uuid='143072699567177728')
|
||||||
|
|
|
@ -56,7 +56,7 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
self.interface.database.add_object(self.session, self.loc)
|
self.interface.database.add_object(self.session, self.loc)
|
||||||
self.interface.database.add_object(self.session, self.owner)
|
self.interface.database.add_object(self.session, self.owner)
|
||||||
self.session.commit()
|
self.session.commit()
|
||||||
self.loc.owner_id
|
|
||||||
expr = Location.owner == self.owner
|
expr = Location.owner == self.owner
|
||||||
self.interface.database.delete_entry(self.session, Location, expr)
|
self.interface.database.delete_entry(self.session, Location, expr)
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
|
|
||||||
def test_add_two_shops(self):
|
def test_add_two_shops(self):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
shop1 = self.add_shop(owner)
|
self.add_shop(owner)
|
||||||
shop2 = self.interface.add_shop(self.session, owner, 'no u', 1, 3)
|
shop2 = self.interface.add_shop(self.session, owner, 'no u', 1, 3)
|
||||||
|
|
||||||
loc_list = self.interface.find_location_by_owner(self.session, owner)
|
loc_list = self.interface.find_location_by_owner(self.session, owner)
|
||||||
|
@ -97,7 +97,6 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
tunnel2 = self.interface.find_tunnel_by_owner_name(self.session, 'ZeroHD')[0]
|
tunnel2 = self.interface.find_tunnel_by_owner_name(self.session, 'ZeroHD')[0]
|
||||||
self.assertEqual(tunnel1, tunnel2)
|
self.assertEqual(tunnel1, tunnel2)
|
||||||
|
|
||||||
|
|
||||||
def test_add_item(self):
|
def test_add_item(self):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
self.add_shop(owner)
|
self.add_shop(owner)
|
||||||
|
@ -134,7 +133,7 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
|
|
||||||
def test_find_location_around(self):
|
def test_find_location_around(self):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
loc = self.add_loc(owner)
|
self.add_loc(owner)
|
||||||
|
|
||||||
dim = "o"
|
dim = "o"
|
||||||
|
|
||||||
|
@ -172,7 +171,7 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
|
|
||||||
def test_search_all(self):
|
def test_search_all(self):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
loc = self.add_loc(owner)
|
self.add_loc(owner)
|
||||||
|
|
||||||
loc_list = self.interface.search_all_fields(self.session, 'ZeroHD')
|
loc_list = self.interface.search_all_fields(self.session, 'ZeroHD')
|
||||||
|
|
||||||
|
@ -202,9 +201,9 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
|
|
||||||
self.assertRaises(DatabaseValueError, self.interface.add_base, self.session, owner,
|
self.assertRaises(DatabaseValueError, self.interface.add_base, self.session, owner,
|
||||||
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'
|
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'
|
||||||
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'
|
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'
|
||||||
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT', 0, 0,)
|
'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT', 0, 0, )
|
||||||
|
|
||||||
def test_duplicate_name(self):
|
def test_duplicate_name(self):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
|
@ -215,7 +214,7 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
|
|
||||||
def test_delete_parent(self):
|
def test_delete_parent(self):
|
||||||
owner = self.add_player()
|
owner = self.add_player()
|
||||||
loc = self.add_shop(owner)
|
self.add_shop(owner)
|
||||||
|
|
||||||
self.interface.add_item(self.session, owner, 'test', 'dirt', 1, 15)
|
self.interface.add_item(self.session, owner, 'test', 'dirt', 1, 15)
|
||||||
|
|
||||||
|
@ -223,11 +222,3 @@ class TestGeoffreyDatabase(TestCase):
|
||||||
|
|
||||||
shops = self.interface.find_shop_selling_item(self.session, 'dirt')
|
shops = self.interface.find_shop_selling_item(self.session, 'dirt')
|
||||||
self.assertEqual(len(shops), 0)
|
self.assertEqual(len(shops), 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
from unittest import TestCase
|
||||||
|
from DiscordHelperFunctions import get_nickname
|
||||||
|
|
||||||
|
|
||||||
|
class TestGet_nickname(TestCase):
|
||||||
|
def test_get_nickname(self):
|
||||||
|
class test:
|
||||||
|
def __init__(self):
|
||||||
|
self.display_name = 'dootb.in ꙩ ⃤'
|
||||||
|
self.nick = 'dootb.in ꙩ ⃤'
|
||||||
|
|
||||||
|
tmp = test()
|
||||||
|
self.assertEqual(get_nickname(tmp), 'aeskdar')
|
Loading…
Reference in New Issue