def test_ling(self): ling = { "name": "xiaoyu", "proper_name": "Xiaoyu", "local_json": "xiaoyu.json", "online_webpage": "http://rbnorway.org/xiaoyu-t7-frames", "portrait": "https://i.imgur.com/zuojLtJ.jpg" } self.assertEqual("AOP (u/b_u_u/f)+3,3", tkfinder.get_move(ling, "AOP uf33")["Command"]) self.assertEqual("AOP (u/b_u_u/f)+3,3", tkfinder.get_move(ling, "AOP ub33")["Command"]) self.assertEqual("AOP (u/b_u_u/f)+3,3", tkfinder.get_move(ling, "AOP u33")["Command"])
def test_get_recovery(self): paul = { "local_json": "paul.json", "name": "paul", "online_webpage": "http://rbnorway.org/paul-t7-frames", "portrait": "https://i.imgur.com/vbjcEy1.jpg", "proper_name": "Paul" } self.assertEqual("-37", tkfinder.get_move(paul, "qcf2")["Recovery"]) move = tkfinder.get_move(paul, "d3") self.assertFalse('Recovery' in move)
def test_ganryu(self): gan = { "local_json": "ganryu.json", "name": "ganryu", "online_webpage": "", "portrait": "https://i.imgur.com/6kScGMT.png", "proper_name": "Ganryu" } self.assertEqual("b+1~2", tkfinder.get_move(gan, "b1~2")["Command"])
def display_moves_by_type(character, move_type): move_list = tkfinder.get_by_move_type(character, move_type) result = object if len(move_list) < 1: result = embed.error_embed('No ' + move_type.lower() + ' for ' + character['proper_name']) elif len(move_list) == 1: character_move = tkfinder.get_move(character, move_list[0]) result = embed.move_embed(character, character_move) elif len(move_list) > 1: result = embed.move_list_embed(character, move_list, move_type) return result
def test_ganryu_gigas(self): gan = { "local_json": "ganryu.json", "name": "ganryu", "online_webpage": "", "portrait": "https://i.imgur.com/6kScGMT.png", "proper_name": "Ganryu" } self.assertEqual("b+1~2", tkfinder.get_move(gan, "b1~2")["Command"]) gigas = { "local_json": "gigas.json", "name": "gigas", "online_webpage": "http://geppopotamus.info/game/tekken7fr/gigas/data_en.htm", "portrait": "https://i.imgur.com/jTGmJyf.jpg", "proper_name": "Gigas" } self.assertEqual( "RD (3 steps) b+2*~f,n", tkfinder.get_move(gigas, "RD (3 steps) b+2*~f,n")["Command"])
def display_moves_by_input(character, original_move): character_move = tkfinder.get_move(character, original_move) character_name = character["name"] if character_move is not None: result = embed.move_embed(character, character_move) else: generic_move = tkfinder.get_generic_move(original_move) if generic_move is not None: generic_character = tkfinder.get_character_detail("generic") result = embed.move_embed(generic_character, generic_move) else: similar_moves = tkfinder.get_similar_moves(original_move, character_name) result = embed.similar_moves_embed(similar_moves, character_name) return result
def display_moves_by_type(character, move_type): move_list = tkfinder.get_by_move_type(character, move_type) result = {} if len(move_list) < 1: result["embed"] = embed.error_embed('No ' + move_type.lower() + ' for ' + character['proper_name']) elif len(move_list) == 1: character_move = tkfinder.get_move(character, move_list[0]) if character_move and "Tags" in character_move: result["components"] = ActionRow(create_components(character_move)) result["embed"] = embed.move_embed(character, character_move) elif len(move_list) > 1: result["embed"] = embed.move_list_embed(character, move_list, move_type) return result
def display_moves_by_frame(character, move_type, definition): if len(definition) < 2: result = embed.error_embed('Specify a ' + move_type.lower() + ' frame for ' + character['proper_name']) return result move_list = tkfinder.get_by_move_frame(character, move_type, definition) result = object if len(move_list) < 1: result = embed.error_embed('No ' + definition.lower() + ' moves for ' + character['proper_name']) elif len(move_list) == 1: character_move = tkfinder.get_move(character, move_list[0]) result = embed.move_embed(character, character_move) elif len(move_list) > 1: result = embed.move_list_embed(character, move_list, move_type) return result
def display_moves_by_input(character, original_move): character_move = tkfinder.get_move(character, original_move) character_name = character["name"] result = {} if character_move is not None: result["embed"] = embed.move_embed(character, character_move) else: generic_move = tkfinder.get_generic_move(original_move) if generic_move is not None: generic_character = tkfinder.get_character_detail("generic") result["embed"] = embed.move_embed(generic_character, generic_move) else: similar_moves = tkfinder.get_similar_moves(original_move, character_name) result["embed"] = embed.similar_moves_embed( similar_moves, character_name) if character_move and "Tags" in character_move and len( character_move["Tags"]) > 0: result["components"] = ActionRow(create_components(character_move)) return result
def test_get_cha_move(self): jin = { "local_json": "jin.json", "name": "jin", "online_webpage": "http://rbnorway.org/jin-t7-frames", "portrait": "https://i.imgur.com/xat3qAS.jpg", "proper_name": "Jin" } self.assertEqual("in rage f,n,d,d/f+1+2", tkfinder.get_move(jin, "in rage cd 1+2")["Command"]) leroy = { "local_json": "leroy.json", "name": "leroy", "online_webpage": "", "portrait": "https://i.imgur.com/FrR8dDq.png", "proper_name": "Leroy Smith" } self.assertEqual("d/f+1", tkfinder.get_move(leroy, "df1")["Command"]) self.assertEqual("f,f,f+3", tkfinder.get_move(kazuya, "wr3")["Command"]) self.assertEqual("1,1,2", tkfinder.get_move(kazuya, "112")["Command"]) self.assertEqual("f,n,d,d/f+4,1", tkfinder.get_move(kazuya, "hs")["Command"]) self.assertEqual("f,n,d,d/f+4,1", tkfinder.get_move(kazuya, "cd41")["Command"]) self.assertEqual("f,n,d,d/f+2", tkfinder.get_move(kazuya, "ewgf")["Command"]) self.assertEqual("WS+1,2", tkfinder.get_move(kazuya, "ws12")["Command"]) self.assertEqual("b+2,1", tkfinder.get_move(kazuya, "b21")["Command"]) marduk = { "name": "marduk", "proper_name": "Marduk", "local_json": "marduk.json", "online_webpage": "http://rbnorway.org/marduk-t7-frames", "portrait": "https://i.imgur.com/2OtX6nd.png" } self.assertEqual("d/f+3,d/f+1,2", tkfinder.get_move(marduk, "df3df12")["Command"]) self.assertEqual("d/f+3,1,d+2", tkfinder.get_move(marduk, "df31,d+2")["Command"]) self.assertEqual("d/f+3,1,d+2", tkfinder.get_move(marduk, "df3,1d+2")["Command"]) self.assertEqual("d/f+3,1,d+2", tkfinder.get_move(marduk, "df+3,1d2")["Command"]) self.assertEqual("(u/b_u_u/f)+3", tkfinder.get_move(marduk, "u3")["Command"]) self.assertEqual("(u/b_u_u/f)+3", tkfinder.get_move(marduk, "uf3")["Command"]) self.assertEqual("(u/b_u_u/f)+3", tkfinder.get_move(marduk, "ub3")["Command"]) leo = { "name": "leo", "proper_name": "Leo", "local_json": "leo.json", "online_webpage": "http://rbnorway.org/leo-t7-frames", "portrait": "https://i.imgur.com/i1CO8SB.jpg" } self.assertEqual("WS+4, 1+2", tkfinder.get_move(leo, "ws41+2")["Command"]) self.assertEqual("b+1, 4", tkfinder.get_move(leo, "b14")["Command"]) self.assertEqual("KNK 3, 4", tkfinder.get_move(leo, "knk 34")["Command"]) self.assertEqual("KNK 1+2", tkfinder.get_move(leo, "knk 1+2")["Command"]) self.assertEqual("FC+d/f+3", tkfinder.get_move(leo, "fc df3")["Command"]) kazumi = { "name": "kazumi", "proper_name": "Kazumi", "local_json": "kazumi.json", "online_webpage": "http://rbnorway.org/kazumi-t7-frames", "portrait": "https://i.imgur.com/ZNiaFwL.jpg" } self.assertEqual("b, f+2, 1, 1+2", tkfinder.get_move(kazumi, "bf211+2")["Command"]) self.assertEqual("u/f+4", tkfinder.get_move(kazumi, "uf4")["Command"]) chloe = { "name": "lucky_chloe", "proper_name": "Lucky Chloe", "local_json": "lucky_chloe.json", "online_webpage": "http://rbnorway.org/lucky-chloe-t7-frames", "portrait": "https://i.imgur.com/iNXYpwT.jpg" } self.assertEqual("u/b_u_u/f+3", tkfinder.get_move(chloe, "uf3")["Command"]) leroy = { "local_json": "leroy.json", "name": "leroy", "online_webpage": "", "portrait": "https://i.imgur.com/FrR8dDq.png", "proper_name": "Leroy Smith" } self.assertEqual("HRM 3,4", tkfinder.get_move(leroy, "HRM 34")["Command"])
async def on_message(message): """This has the main functionality of the bot. It has a lot of things that would be better suited elsewhere but I don't know if I'm going to change it.""" try: channel = message.channel if message.content == "?credit": await channel.send(embed=embed.thank_embed()) return elif message.content == '!help': await channel.send(embed=embed.help_embed()) return elif message.content == '!clear-messages': await channel.purge(limit=200, check=is_me) return elif message.content.startswith('?feedback'): user_message = message.content.split(' ', 1)[1] server_name = str(message.channel.guild) try: feedback_channel = bot.get_channel(const.FEEDBACK_CHANNEL_ID) user_message = user_message.replace("\n", "") result = "{} ; {} ; {};\n".format(str(message.author), server_name, user_message) await feedback_channel.send(result) await channel.send(embed=embed.success_embed("Feedback sent")) except Exception as e: await channel.send(embed=embed.error_embed( "Feedback couldn't be sent caused by: " + e)) return elif message.content.startswith('!'): delete_after = 20 if ('tekken' in channel.name) or ('frame' in channel.name): delete_after = None user_message = message.content command = user_message[1:] user_message_list = command.split(' ', 1) if len(user_message_list) <= 1: # malformed command return original_name = user_message_list[0].lower() original_move = user_message_list[1] character_name = tkfinder.correct_character_name(original_name) if character_name is not None: character = tkfinder.get_character_data(character_name) character_move = original_move.lower() if original_move.lower() in const.MOVE_TYPES.keys(): move_list = tkfinder.get_by_move_type( character, const.MOVE_TYPES[character_move]) if len(move_list) < 1: result = embed.error_embed( 'No ' + const.MOVE_TYPES[character_move].lower() + ' for ' + character['proper_name']) await channel.send(embed=result, delete_after=delete_after) elif len(move_list) == 1: character_move = tkfinder.get_move( character, move_list[0]) result = embed.move_embed(character, character_move) await channel.send(embed=result, delete_after=delete_after) elif len(move_list) > 1: result = embed.move_list_embed( character, move_list, const.MOVE_TYPES[character_move]) await channel.send(embed=result, delete_after=delete_after) else: character_move = tkfinder.get_move(character, original_move) # First checks the move as case sensitive, if it doesn't find it # it checks it case insensitive if character_move is not None: result = embed.move_embed(character, character_move) await channel.send(embed=result, delete_after=delete_after) else: character_move = tkfinder.get_move( character, original_move) if character_move is not None: result = embed.move_embed(character, character_move) await channel.send(embed=result, delete_after=delete_after) else: similar_moves = tkfinder.get_similar_moves( original_move, character_name) result = embed.similar_moves_embed(similar_moves) await channel.send(embed=result, delete_after=delete_after) else: bot_msg = f'Character {original_name} does not exist.' result = embed.error_embed(bot_msg) await message.channel.send(embed=result, delete_after=5) return await bot.process_commands(message) except Exception as e: print(e) logger.error(e)
async def on_message(message): """This has the main functionality of the bot. It has a lot of things that would be better suited elsewhere but I don't know if I'm going to change it.""" try: channel = message.channel if message.content.startswith("!auto-delete"): if message.author.permissions_in(channel).manage_messages: duration = message.content.split(' ', 1)[1] if duration.isdigit() or duration == "-1": config.save_auto_delete_duration(channel.id, duration) await channel.send(embed=embed.success_embed("Saved")) else: await channel.send(embed=embed.error_embed( "Duration needs to be a number in seconds")) else: await channel.send(embed=embed.error_embed( "You need the permission <manage_messages> to do that")) return elif message.content == '!help': await channel.send(embed=embed.help_embed()) return elif message.content.startswith('?feedback'): user_message = message.content.split(' ', 1)[1] server_name = str(message.channel.guild) try: feedback_channel = bot.get_channel(feedback_channel_id) user_message = user_message.replace("\n", "") result = "{} ; {} ; {};\n".format(str(message.author), server_name, user_message) await feedback_channel.send(result) await channel.send(embed=embed.success_embed("Feedback sent")) except Exception as e: await channel.send(embed=embed.error_embed( "Feedback couldn't be sent caused by: " + e)) return elif message.content.startswith('!'): delete_after = config.get_auto_delete_duration(channel.id) user_message = message.content command = user_message[1:] user_message_list = command.split(' ', 1) if len(user_message_list) <= 1: # malformed command return original_name = user_message_list[0].lower() original_move = user_message_list[1] character_name = tkfinder.correct_character_name(original_name) if character_name is not None: character = tkfinder.get_character_data(character_name) character_move = original_move.lower() if original_move.lower() in const.MOVE_TYPES.keys(): move_list = tkfinder.get_by_move_type( character, const.MOVE_TYPES[character_move]) if len(move_list) < 1: result = embed.error_embed( 'No ' + const.MOVE_TYPES[character_move].lower() + ' for ' + character['proper_name']) await channel.send(embed=result, delete_after=delete_after) elif len(move_list) == 1: character_move = tkfinder.get_move( character, move_list[0]) result = embed.move_embed(character, character_move) await channel.send(embed=result, delete_after=delete_after) elif len(move_list) > 1: result = embed.move_list_embed( character, move_list, const.MOVE_TYPES[character_move]) await channel.send(embed=result, delete_after=delete_after) else: character_move = tkfinder.get_move(character, original_move) if character_move is not None: result = embed.move_embed(character, character_move) await channel.send(embed=result, delete_after=delete_after) else: similar_moves = tkfinder.get_similar_moves( original_move, character_name) result = embed.similar_moves_embed(similar_moves) await channel.send(embed=result, delete_after=delete_after) else: bot_msg = f'Character {original_name} does not exist.' result = embed.error_embed(bot_msg) await message.channel.send(embed=result, delete_after=5) return await bot.process_commands(message) except Exception as e: error_msg = f'Message: {message.content}. Error: {e}' print(error_msg) logger.error(error_msg)