Bladeren bron

Fix import in commands.py

Lucas Villeneuve 5 jaren geleden
bovenliggende
commit
a99a8568a1
1 gewijzigde bestanden met toevoegingen van 161 en 160 verwijderingen
  1. 161 160
      myanimebot/commands.py

+ 161 - 160
myanimebot/commands.py

@@ -6,189 +6,190 @@ from typing import List, Tuple
 
 import myanimebot.utils as utils
 import myanimebot.globals as globals
+import myanimebot.anilist as anilist
 
 def build_info_cmd_message(users, server, channels, filters : List[utils.Service]) -> str:
-	''' Build the corresponding message for the info command '''
-
-	registered_channel = globals.client.get_channel(int(channels[0]["channel"]))
-
-	# Store users
-	mal_users = []
-	anilist_users = []
-	for user in users:
-		# If user is part of the server, add it to the message
-		if str(server.id) in user['servers'].split(','):
-			try:
-				user_service = utils.Service.from_str(user["service"])
-				if user_service == utils.Service.MAL:
-					mal_users.append(user[globals.DB_USER_NAME])
-				elif user_service == utils.Service.ANILIST:
-					anilist_users.append(user[globals.DB_USER_NAME])
-			except NotImplementedError:
-				pass # Nothing to do here
-
-	if not mal_users and not anilist_users:
-		return "No users registered on this server. Try to add one."
-	else:
-		message =  'Registered user(s) on **{}**\n\n'.format(server)
-		if mal_users: # If not empty
-			# Don't print if there is filters and MAL is not in them
-			if not filters or (filters and utils.Service.MAL in filters): 
-				message += '**MyAnimeList** users:\n'
-				message += '```{}```\n'.format(', '.join(mal_users))
-		if anilist_users: # If not empty
-			# Don't print if there is filters and MAL is not in them
-			if not filters or (filters and utils.Service.ANILIST in filters):
-				message += '**AniList** users:\n'
-				message += '```{}```\n'.format(', '.join(anilist_users))
-		message += 'Assigned channel : **{}**'.format(registered_channel)
-	return message
+    ''' Build the corresponding message for the info command '''
+
+    registered_channel = globals.client.get_channel(int(channels[0]["channel"]))
+
+    # Store users
+    mal_users = []
+    anilist_users = []
+    for user in users:
+        # If user is part of the server, add it to the message
+        if str(server.id) in user['servers'].split(','):
+            try:
+                user_service = utils.Service.from_str(user["service"])
+                if user_service == utils.Service.MAL:
+                    mal_users.append(user[globals.DB_USER_NAME])
+                elif user_service == utils.Service.ANILIST:
+                    anilist_users.append(user[globals.DB_USER_NAME])
+            except NotImplementedError:
+                pass # Nothing to do here
+
+    if not mal_users and not anilist_users:
+        return "No users registered on this server. Try to add one."
+    else:
+        message =  'Registered user(s) on **{}**\n\n'.format(server)
+        if mal_users: # If not empty
+            # Don't print if there is filters and MAL is not in them
+            if not filters or (filters and utils.Service.MAL in filters): 
+                message += '**MyAnimeList** users:\n'
+                message += '```{}```\n'.format(', '.join(mal_users))
+        if anilist_users: # If not empty
+            # Don't print if there is filters and MAL is not in them
+            if not filters or (filters and utils.Service.ANILIST in filters):
+                message += '**AniList** users:\n'
+                message += '```{}```\n'.format(', '.join(anilist_users))
+        message += 'Assigned channel : **{}**'.format(registered_channel)
+    return message
 
 
 def get_service_filters_list(filters : str) -> List[utils.Service]:
-	''' Creates and returns a service filter list from a comma-separated string '''
+    ''' Creates and returns a service filter list from a comma-separated string '''
 
-	filters_list = []
-	for filter in filters.split(','):
-		try:
-			filters_list.append(utils.Service.from_str(filter))
-		except NotImplementedError:
-			pass # Ignore incorrect filter
-	return filters_list
+    filters_list = []
+    for filter in filters.split(','):
+        try:
+            filters_list.append(utils.Service.from_str(filter))
+        except NotImplementedError:
+            pass # Ignore incorrect filter
+    return filters_list
 
 
 def check_user_name_validity(user_name: str, service : utils.Service) -> Tuple[bool, str]:
-	""" Check if user_name exists on a specific service.
-		
-		Returns:
-			- bool: 	True if user_name exists
-			- str:		Error string if the user does not exist
-	"""
-
-	if service == utils.Service.MAL:
-		try:
-			# Ping user profile to check validity
-			urllib.request.urlopen('{}{}'.format(globals.MAL_PROFILE_URL, user_name))
-		except urllib.error.HTTPError as e:
-			if (e.code == 404): # URL profile not found
-				return False, "User **{}** doesn't exist on MyAnimeList!".format(user_name)
-			else:
-				globals.logger.warning("HTTP Code {} while trying to add user '{}' and checking its validity.".format(e.code, user_name))
-				return False, "An error occured when we checked this username on MyAnimeList, maybe the website is down?"
-	elif service == utils.Service.ANILIST:
-		is_user_valid = anilist.check_username_validity(user_name)
-		if is_user_valid == False:
-			globals.logger.warning("No results returned while trying to add user '{}' and checking its validity.".format(user_name))
-			return False, "User **{}** doesn't exist on AniList!".format(user_name)
-	return True, None
+    """ Check if user_name exists on a specific service.
+        
+        Returns:
+            - bool: 	True if user_name exists
+            - str:		Error string if the user does not exist
+    """
+
+    if service == utils.Service.MAL:
+        try:
+            # Ping user profile to check validity
+            urllib.request.urlopen('{}{}'.format(globals.MAL_PROFILE_URL, user_name))
+        except urllib.error.HTTPError as e:
+            if (e.code == 404): # URL profile not found
+                return False, "User **{}** doesn't exist on MyAnimeList!".format(user_name)
+            else:
+                globals.logger.warning("HTTP Code {} while trying to add user '{}' and checking its validity.".format(e.code, user_name))
+                return False, "An error occured when we checked this username on MyAnimeList, maybe the website is down?"
+    elif service == utils.Service.ANILIST:
+        is_user_valid = anilist.check_username_validity(user_name)
+        if is_user_valid == False:
+            globals.logger.warning("No results returned while trying to add user '{}' and checking its validity.".format(user_name))
+            return False, "User **{}** doesn't exist on AniList!".format(user_name)
+    return True, None
 
 
 async def add_user_cmd(words, message):
-	''' Processes the command "add" and add a user to fetch the data for '''
-
-	# Check if command is valid
-	if len(words) != 4:
-		if (len(words) < 4):
-			return await message.channel.send("Usage: {} add **{}**/**{}** **username**".format(globals.prefix, globals.SERVICE_MAL, globals.SERVICE_ANILIST))
-		return await message.channel.send("Too many arguments! You have to specify only one username.")
-
-	try:
-		service = utils.Service.from_str(words[2])
-	except NotImplementedError:
-		return await message.channel.send('Incorrect service. Use **"{}"** or **"{}"** for example'.format(globals.SERVICE_MAL, globals.SERVICE_ANILIST))
-	user = words[3]
-	server_id = str(message.guild.id)
-
-	if(len(user) > 14):
-		return await message.channel.send("Username too long!")
-
-	try:
-		# Check user validity
-		is_valid, error_string = check_user_name_validity(user, service)
-		if is_valid == False:
-			return await message.channel.send(error_string)
-
-		# Get user's servers
-		user_servers = utils.get_user_servers(user, service)
-		# User not present in database
-		if user_servers is None: 
-			utils.insert_user_into_db(user, service, server_id)
-			return await message.channel.send("**{}** added to the database for the server **{}**.".format(user, str(message.guild)))
-		else: # User present in database
-
-			is_server_present = server_id in user_servers.split(',')
-			if is_server_present == True: # The user already has registered this server
-				return await message.channel.send("User **{}** is already registered in our database for this server!".format(user))
-			else:
-				new_servers = '{},{}'.format(user_servers, server_id)
-				utils.update_user_servers_db(user, service, new_servers)					
-				return await message.channel.send("**{}** added to the database for the server **{}**.".format(user, str(message.guild)))
-	except Exception as e:
-		globals.logger.warning("Error while adding user '{}' on server '{}': {}".format(user, message.guild, str(e)))
-		return await message.channel.send("An unknown error occured while addind this user, the error has been logged.")
+    ''' Processes the command "add" and add a user to fetch the data for '''
+
+    # Check if command is valid
+    if len(words) != 4:
+        if (len(words) < 4):
+            return await message.channel.send("Usage: {} add **{}**/**{}** **username**".format(globals.prefix, globals.SERVICE_MAL, globals.SERVICE_ANILIST))
+        return await message.channel.send("Too many arguments! You have to specify only one username.")
+
+    try:
+        service = utils.Service.from_str(words[2])
+    except NotImplementedError:
+        return await message.channel.send('Incorrect service. Use **"{}"** or **"{}"** for example'.format(globals.SERVICE_MAL, globals.SERVICE_ANILIST))
+    user = words[3]
+    server_id = str(message.guild.id)
+
+    if(len(user) > 14):
+        return await message.channel.send("Username too long!")
+
+    try:
+        # Check user validity
+        is_valid, error_string = check_user_name_validity(user, service)
+        if is_valid == False:
+            return await message.channel.send(error_string)
+
+        # Get user's servers
+        user_servers = utils.get_user_servers(user, service)
+        # User not present in database
+        if user_servers is None: 
+            utils.insert_user_into_db(user, service, server_id)
+            return await message.channel.send("**{}** added to the database for the server **{}**.".format(user, str(message.guild)))
+        else: # User present in database
+
+            is_server_present = server_id in user_servers.split(',')
+            if is_server_present == True: # The user already has registered this server
+                return await message.channel.send("User **{}** is already registered in our database for this server!".format(user))
+            else:
+                new_servers = '{},{}'.format(user_servers, server_id)
+                utils.update_user_servers_db(user, service, new_servers)					
+                return await message.channel.send("**{}** added to the database for the server **{}**.".format(user, str(message.guild)))
+    except Exception as e:
+        globals.logger.warning("Error while adding user '{}' on server '{}': {}".format(user, message.guild, str(e)))
+        return await message.channel.send("An unknown error occured while addind this user, the error has been logged.")
 
 
 async def delete_user_cmd(words, message):
-	''' Processes the command "delete" and remove a registered user '''
-
-	# Check if command is valid
-	if len(words) != 4:
-		if (len(words) < 4):
-			return await message.channel.send("Usage: {} delete **{}**/**{}** **username**".format(globals.prefix, globals.SERVICE_MAL, globals.SERVICE_ANILIST))
-		return await message.channel.send("Too many arguments! You have to specify only one username.")
-	try:
-		service = utils.Service.from_str(words[2])
-	except NotImplementedError:
-		return await message.channel.send('Incorrect service. Use **"{}"** or **"{}"** for example'.format(globals.SERVICE_MAL, globals.SERVICE_ANILIST))
-	user = words[3]
-	server_id = str(message.guild.id)
-	
-	user_servers = utils.get_user_servers(user, service)
-	# If user is not present in the database
-	if user_servers is None:
-		return await message.channel.send("The user **" + user + "** is not in our database for this server!")
-
-	# Else if present, update the servers for this user
-	srv_string = utils.remove_server_from_servers(server_id, user_servers)
-	
-	if srv_string is None: # Server not present in the user's servers
-		return await message.channel.send("The user **" + user + "** is not in our database for this server!")
-
-	if srv_string == "":
-		utils.delete_user_from_db(user, service)
-	else:
-		utils.update_user_servers_db(user, service, srv_string)
-
-	return await message.channel.send("**" + user + "** deleted from the database for this server.")
+    ''' Processes the command "delete" and remove a registered user '''
+
+    # Check if command is valid
+    if len(words) != 4:
+        if (len(words) < 4):
+            return await message.channel.send("Usage: {} delete **{}**/**{}** **username**".format(globals.prefix, globals.SERVICE_MAL, globals.SERVICE_ANILIST))
+        return await message.channel.send("Too many arguments! You have to specify only one username.")
+    try:
+        service = utils.Service.from_str(words[2])
+    except NotImplementedError:
+        return await message.channel.send('Incorrect service. Use **"{}"** or **"{}"** for example'.format(globals.SERVICE_MAL, globals.SERVICE_ANILIST))
+    user = words[3]
+    server_id = str(message.guild.id)
+    
+    user_servers = utils.get_user_servers(user, service)
+    # If user is not present in the database
+    if user_servers is None:
+        return await message.channel.send("The user **" + user + "** is not in our database for this server!")
+
+    # Else if present, update the servers for this user
+    srv_string = utils.remove_server_from_servers(server_id, user_servers)
+    
+    if srv_string is None: # Server not present in the user's servers
+        return await message.channel.send("The user **" + user + "** is not in our database for this server!")
+
+    if srv_string == "":
+        utils.delete_user_from_db(user, service)
+    else:
+        utils.update_user_servers_db(user, service, srv_string)
+
+    return await message.channel.send("**" + user + "** deleted from the database for this server.")
 
 
 async def info_cmd(message, words):
-	''' Processes the command "info" and sends a message '''
+    ''' Processes the command "info" and sends a message '''
 
-	# Get filters if available
-	filters = []
-	if (len(words) >= 3): # If filters are specified
-		filters = get_service_filters_list(words[2])
+    # Get filters if available
+    filters = []
+    if (len(words) >= 3): # If filters are specified
+        filters = get_service_filters_list(words[2])
 
-	server = message.guild
-	if utils.is_server_in_db(server.id) == False:
-		 await message.channel.send("The server **{}** is not in our database.".format(server))
-	else:
-		users = utils.get_users()
-		channels = utils.get_channels(server.id)
-		if channels is None:
-			await message.channel.send("No channel assigned for this bot on this server.")
-		else:
-			await message.channel.send(build_info_cmd_message(users, server, channels, filters))
+    server = message.guild
+    if utils.is_server_in_db(server.id) == False:
+         await message.channel.send("The server **{}** is not in our database.".format(server))
+    else:
+        users = utils.get_users()
+        channels = utils.get_channels(server.id)
+        if channels is None:
+            await message.channel.send("No channel assigned for this bot on this server.")
+        else:
+            await message.channel.send(build_info_cmd_message(users, server, channels, filters))
 
 
 async def ping_cmd(message, channel):
-	''' Responds to ping command '''
-	messageTimestamp = message.created_at
-	currentTimestamp = datetime.datetime.utcnow()
-	delta = round((currentTimestamp - messageTimestamp).total_seconds() * 1000)
-	
-	await channel.send("pong (" + str(delta) + "ms)")
+    ''' Responds to ping command '''
+    messageTimestamp = message.created_at
+    currentTimestamp = datetime.datetime.utcnow()
+    delta = round((currentTimestamp - messageTimestamp).total_seconds() * 1000)
+    
+    await channel.send("pong (" + str(delta) + "ms)")
 
 
 async def about_cmd(channel):