Ejemplo n.º 1
0
 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"])
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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"])
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
    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"])
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
Archivo: util.py Proyecto: hyld3/kinjin
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
Archivo: util.py Proyecto: hyld3/kinjin
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
Ejemplo n.º 10
0
    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"])
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)