Esempio n. 1
0
 async def update_chat_birthday(self, ctx, chat: discord.TextChannel):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     server_id = ctx.guild.id
     with Database() as db:
         db.execute(
             'SELECT id FROM "default".servers WHERE discord_server_id = %s',
             [server_id])
         db_server_id = db.fetchone()[0]
         db.execute(
             'SELECT birthdays_chat FROM "default".servers_chats WHERE server_id = %s',
             [db_server_id])
         birthdays_chat_id = db.fetchone()[0]
         if not birthdays_chat_id:
             return await ctx.send(
                 choice(vocabulary.update_chat_birthday.chat_does_not_exist)
             )
         if birthdays_chat_id[0] == chat.id:
             return await ctx.send(
                 choice(vocabulary.update_chat_birthday.the_same_data))
         db.execute(
             'UPDATE "default".servers_chats SET birthdays_chat = %s WHERE server_id = %s',
             [chat.id, db_server_id])
     await ctx.send(
         choice(vocabulary.update_chat_birthday.success).format(
             chat.mention))
Esempio n. 2
0
 async def check_birthdays(self):
     with Database() as db:
         data = db.execute('''
             SELECT discord_user_id,
             date_part('year', CURRENT_DATE) - date_part('year', birthdays.date),
             discord_server_id,
             birthdays_chat
             FROM "default".users, "default".birthdays, "default".servers, "default".servers_chats
             WHERE users.id = birthdays.user_id
             AND servers.id = servers_chats.server_id
             AND (users.id, servers.id) IN (
                 SELECT user_id, server_id
                 FROM "default".connect
                 )
             AND birthdays_chat != 0
             AND date_part('month', CURRENT_DATE) = date_part('month', date)
             AND date_part('day', CURRENT_DATE) = date_part('day', date)'''
                           ).fetchall()
         for user_id, age, server_id, chat_id in data:
             user = self.bot.get_user(user_id)
             server = self.bot.get_guild(server_id)
             chat = self.bot.get_channel(chat_id)
             vocabulary = speech_setting(server.id).birthdays
             embed = discord.Embed(
                 title=vocabulary.check_birthdays.title.format(user.name),
                 description=vocabulary.check_birthdays.description.format(
                     user.mention, ':heart:', self.bot.user.mention),
                 colour=discord.Colour.purple())
             embed.set_thumbnail(url=user.avatar_url)
             await chat.send(embed=embed)
Esempio n. 3
0
 async def check_level_up(self, message):
     vocabulary = speech_setting(message.guild.id).level_system
     if message.author.bot:
         return
     user = message.author
     user_id = user.id
     server = message.guild
     server_id = server.id
     with Database() as db:
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         db_user_id = db.execute('SELECT id FROM "default".users WHERE discord_user_id = %s', [user_id]).fetchone()[0]
         levels = db.execute('SELECT level_id, level_xp FROM "default".servers_levels WHERE server_id = %s ORDER BY level_xp DESC ', [db_server_id]).fetchall()
         if not levels:
             return
         user_xp = db.execute('SELECT xp FROM "default".users_levels WHERE user_id = %s and server_id = %s', [db_user_id, db_server_id]).fetchone()[0]
         user_xp += 1
         db.execute('UPDATE "default".users_levels SET xp = %s WHERE user_id = %s and server_id = %s', [user_xp, db_user_id, db_server_id])
         for db_level, db_xp in levels:
             if user_xp == db_xp:
                 db.execute('UPDATE "default".users_levels SET level = %s WHERE user_id = %s and server_id = %s', [db_level, db_user_id, db_server_id])
                 mention = user.mention
                 role = get(server.roles, id=db_level)
                 await user.remove_roles(*[_role for _role in user.roles if _role in [_db_role for _db_role, _xp in levels]])
                 await user.add_roles(role)
                 embed = discord.Embed(
                     title=vocabulary.check_level_up.title,
                     description=choice(vocabulary.check_level_up.description_start).format(mention) + vocabulary.check_level_up.description_end.format(role.mention, user_xp),
                     colour=discord.Colour.purple()
                 )
                 embed.set_thumbnail(url=user.avatar_url)
                 info_chat = db.execute('SELECT info_chat FROM "default".servers_chats WHERE server_id = %s', [db_server_id]).fetchone()[0]
                 if info_chat:
                     return await self.bot.get_channel(info_chat).send(embed=embed)
                 return await message.channel.send(embed=embed)
Esempio n. 4
0
    async def add_birthday(self, ctx, year: int, month: int, day: int):
        vocabulary = speech_setting(ctx.guild.id).birthdays
        if not (0 < year < datetime.date.today().year and 0 < month < 13
                and 0 < day < 32):
            return await ctx.send(
                choice(vocabulary.add_birthday.incorrect_date))
        user_id = ctx.message.author.id
        user_date = datetime.date(year, month, day)
        month, day = user_date.month, user_date.day
        with Database() as db:
            db.execute(
                'SELECT id FROM "default".users WHERE discord_user_id = %s',
                [user_id])
            db_user_id = db.fetchone()[0]
            db.execute(
                'SELECT date FROM "default".birthdays WHERE user_id = %s',
                [db_user_id])
            db_date = db.fetchone()
            if db_date:
                db_date = str(db_date[0]).replace("-", ".")
                return await ctx.send(
                    choice(vocabulary.add_birthday.date_already_exosts).format(
                        db_date))
            db.execute(
                'INSERT INTO "default".birthdays(user_id, date) VALUES (%s, %s)',
                [db_user_id, user_date.isoformat()])

            await ctx.send(
                choice(vocabulary.add_birthday.success).format(month, day))
Esempio n. 5
0
 async def show_birthdays(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     server = ctx.guild
     with Database() as db:
         output_embed = db.execute(
             '''SELECT discord_user_id, date 
                                      FROM "default".users, "default".birthdays 
                                      WHERE birthdays.user_id = users.id 
                                      AND users.id IN (
                                         SELECT user_id FROM "default".connect 
                                         WHERE server_id = (
                                             SELECT id FROM "default".servers 
                                             WHERE discord_server_id = %s 
                                         )
                                      ) ORDER BY date''',
             [server.id]).fetchall()
     if not output_embed:
         return await ctx.send(choice(vocabulary.show_birthdays.no_info))
     embed = discord.Embed(
         title=vocabulary.show_birthdays.title.format(server.name),
         description="\n".join([
             f"{pos + 1}. {get(server.members, id=value[0]).mention} - **{str(value[1]).replace('-', '.')}**"
             for pos, value in enumerate(output_embed)
         ]),
         colour=discord.Colour.purple())
     embed.set_thumbnail(url=server.icon_url)
     await ctx.send(embed=embed)
Esempio n. 6
0
 async def add_birthday_error(self, ctx, error):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     if isinstance(error, commands.MissingRequiredArgument):
         return await ctx.send(
             choice(vocabulary.add_birthday_error.MissingRequiredArgument))
     if isinstance(error, commands.BadArgument):
         await ctx.send(choice(vocabulary.add_birthday_error.BadArgument))
Esempio n. 7
0
 async def update_birthdays(self, ctx, year: int, month: int, day: int):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     if not (0 < year < datetime.date.today().year and 0 < month < 13
             and 0 < day < 32):
         return await ctx.send(
             choice(vocabulary.update_birthday.incorrect_date))
     user_id = ctx.message.author.id
     user_date = datetime.date(year, month, day)
     month, day = user_date.month, user_date.day
     with Database() as db:
         db.execute(
             'SELECT id FROM "default".users WHERE discord_user_id = %s',
             [user_id])
         db_user_id = db.fetchone()[0]
         db.execute(
             'SELECT date FROM "default".birthdays WHERE user_id = %s',
             [db_user_id])
         db_date = db.fetchone()
         if db_date is None:
             return await ctx.send(
                 choice(vocabulary.update_birthday.date_does_not_exist_yet).
                 format(month, day))
         if db_date[0] == user_date:
             return await ctx.send(
                 choice(vocabulary.update_birthday.the_same_date))
         db.execute(
             'UPDATE "default".birthdays SET date = %s WHERE user_id = %s',
             [user_date, db_user_id])
         await ctx.send(choice(vocabulary.update_birthday.success))
Esempio n. 8
0
 async def translator_help(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).translator
     embed = discord.Embed(title=vocabulary.help.title,
                           description=vocabulary.help.description,
                           colour=discord.Colour.purple())
     embed.add_field(name=vocabulary.help.name, value=vocabulary.help.value)
     await ctx.send(embed=embed)
Esempio n. 9
0
 async def set_chat_birthday(self, ctx, chat: discord.TextChannel):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     server_id = ctx.guild.id
     with Database() as db:
         db.execute(
             'SELECT id FROM "default".servers WHERE discord_server_id = %s',
             [server_id])
         db_server_id = db.fetchone()[0]
         db.execute(
             'SELECT birthdays_chat FROM "default".servers_chats WHERE server_id = %s',
             [db_server_id])
         birthdays_chat_id = db.fetchone()[0]
         if birthdays_chat_id:
             up, delete = commands_names.up_chat, commands_names.del_chat
             birthdays_chat = self.bot.get_channel(
                 birthdays_chat_id).mention
             return await ctx.send(
                 choice(vocabulary.set_chat_birthday.chat_already_exist).
                 format(birthdays_chat, up, delete))
         db.execute(
             'UPDATE "default".servers_chats SET birthdays_chat = %s WHERE server_id = %s',
             [chat.id, db_server_id])
         return await ctx.send(
             choice(vocabulary.set_chat_birthday.success).format(
                 chat.mention))
Esempio n. 10
0
 async def birthday_help(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     embed = discord.Embed(title=vocabulary.help.title,
                           description=vocabulary.help.description,
                           colour=discord.Colour.purple())
     embed.add_field(name=vocabulary.help.name,
                     value=vocabulary.help.value,
                     inline=False)
     await ctx.send(embed=embed)
Esempio n. 11
0
    async def what_the_language_game(self, ctx):
        def check(text):
            return text.author != self.bot.user and not text.content.startswith(
                ".")

        vocabulary = speech_setting(ctx.guild.id).translator
        with Database() as db:
            server_id = db.execute(
                'SELECT id FROM "default".servers WHERE discord_server_id = %s',
                [ctx.guild.id]).fetchone()[0]
            language = db.execute(
                'SELECT language FROM "default".detect_language_game WHERE server_id = %s',
                [server_id]).fetchone()[0]
            if language != "no_lang":
                return await ctx.send(
                    choice(vocabulary.what_the_language_game.active_game))

            language = choice(list(self.google_translator_keys.keys()))
            counter = 3
            response = requests.get("https://zenquotes.io/api/random")
            json_data = json.loads(response.text)
            quote = json_data[0]['q']

            db.execute(
                'UPDATE "default".detect_language_game SET language = %s WHERE server_id = %s',
                [language, server_id])
            embed = discord.Embed(
                title=vocabulary.what_the_language_game.title,
                description=GoogleTranslator(source="en",
                                             target=language).translate(quote),
                colour=discord.Colour.purple())
            await ctx.send(embed=embed)
            while counter:
                print(language)
                counter -= 1
                msg = await self.bot.wait_for("message",
                                              check=check,
                                              timeout=30)
                if msg.content == db.execute(
                        'SELECT language FROM "default".detect_language_game WHERE server_id = %s',
                    [server_id]).fetchone()[0]:
                    db.execute(
                        'UPDATE "default".detect_language_game SET language = %s WHERE server_id = %s',
                        ["no_lang", server_id])
                    return await ctx.send(
                        choice(vocabulary.what_the_language_game.win))
                if counter:
                    await ctx.send(
                        vocabulary.what_the_language_game.tries.format(counter)
                    )
            await ctx.send(
                choice(vocabulary.what_the_language_game.lose_start) +
                vocabulary.what_the_language_game.lose_end.format(
                    language, self.google_translator_keys[language]))
            db.execute(
                'UPDATE "default".detect_language_game SET language = %s WHERE server_id = %s',
                ["no_lang", server_id])
Esempio n. 12
0
 async def language_list(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).translator
     embed = discord.Embed(
         title=vocabulary.language_list.title,
         description="\n".join([
             f"{i} - {j}" for i, j in self.google_translator_keys.items()
         ]),
         colour=discord.Colour.purple())
     await ctx.send(embed=embed)
Esempio n. 13
0
    async def my_help(self, ctx):
        vocabulary = speech_setting(ctx.guild.id).chatting
        embed = discord.Embed(title=vocabulary.help.title,
                              description=vocabulary.help.description,
                              colour=discord.Colour.purple())
        embed.set_footer(text=vocabulary.help.footer)
        embed.set_thumbnail(url=self.bot.user.avatar_url)

        vocabulary = speech_setting(ctx.guild.id)
        embed.add_field(name=vocabulary.glossary.help.title + " " +
                        vocabulary.glossary.help.description,
                        value=vocabulary.glossary.help.value,
                        inline=False)
        embed.add_field(name=vocabulary.glossary.help.language_field.name,
                        value="\n".join(vb.keys()))
        embed.add_field(name=vocabulary.glossary.help.vibe_field.name,
                        value="\n".join(vb[current_language(
                            ctx.guild.id)].__dict__.keys()))
        embed.add_field(name=vocabulary.music_player.help.title + " " +
                        vocabulary.music_player.help.description,
                        value=vocabulary.music_player.help.value,
                        inline=False)
        embed.add_field(name=vocabulary.tic_tac_toe_game.game_help.title +
                        " " +
                        vocabulary.tic_tac_toe_game.game_help.description,
                        value=vocabulary.tic_tac_toe_game.game_help.value,
                        inline=False)
        embed.add_field(name="ЧЕТЫРЕ В РЯД",
                        value="В разработке",
                        inline=False)
        embed.add_field(name=vocabulary.birthdays.help.title,
                        value=vocabulary.birthdays.help.value,
                        inline=False)
        embed.add_field(name=vocabulary.translator.help.title + " " +
                        vocabulary.translator.help.description,
                        value=vocabulary.translator.help.value,
                        inline=False)
        embed.add_field(name=vocabulary.level_system.help.title + " " +
                        vocabulary.level_system.help.description,
                        value=vocabulary.level_system.help.value)
        embed.add_field(name=vocabulary.mini_cogs.help.title,
                        value=vocabulary.mini_cogs.help.value,
                        inline=False)
        await ctx.send(embed=embed)
Esempio n. 14
0
 async def wikipedia_search_error(self, ctx, error):
     vocabulary = speech_setting(ctx.guild.id).wikipedia
     if isinstance(error, commands.MissingRequiredArgument
                   ) or error == commands.MissingRequiredArgument:
         return await ctx.send(
             choice(
                 vocabulary.wikipedia_search_error.MissingRequiredArgument))
     if isinstance(error, commands.BadArgument):
         await ctx.send(
             choice(vocabulary.wikipedia_search_error.BadArgument))
Esempio n. 15
0
 async def level_delete_error(self, ctx, error):
     vocabulary = speech_setting(ctx.guild.id).level_system
     if isinstance(error, commands.MissingPermissions):
         await ctx.send(choice(vocabulary.level_delete_error.MissingPermissions))
     elif isinstance(error, commands.MissingRequiredArgument):
         await ctx.send(choice(vocabulary.level_delete_error.MissingRequiredArgument))
     elif isinstance(error, commands.RoleNotFound):
         await ctx.send(choice(vocabulary.level_delete_error.RoleNotFound))
     elif isinstance(error, commands.BadArgument):
         await ctx.send(choice(vocabulary.level_delete_error.BadArgument))
Esempio n. 16
0
 async def detect_language(self, ctx, *message):
     vocabulary = speech_setting(ctx.guild.id).translator
     language = single_detection(" ".join(message),
                                 api_key=api_key_for_single_detection)
     embed = discord.Embed(
         title=vocabulary.translate.detect_language.title,
         description=self.google_translator_keys[language],
         colour=discord.Colour.purple())
     async with ctx.typing():
         await ctx.send(embed=embed)
Esempio n. 17
0
 def embed_meme(author):
     vocabulary = speech_setting(author.guild.id).chatting
     response = requests.get("https://some-random-api.ml/meme").json()
     url = response["image"]
     embed = discord.Embed(
         title=vocabulary.embed_meme.title,
         description=vocabulary.embed_meme.description.format(
             author.mention),
         colour=discord.Colour.purple())
     embed.set_image(url=url)
     return embed
Esempio n. 18
0
 def embed_cat(author):
     vocabulary = speech_setting(author.guild.id).chatting
     response = requests.get("https://aws.random.cat/meow")
     data = response.json()
     embed = discord.Embed(
         title=vocabulary.embed_cat.title,
         description=vocabulary.embed_cat.description.format(
             author.mention),
         colour=discord.Colour.purple())
     embed.set_image(url=data["file"])
     return embed
Esempio n. 19
0
 async def level_add(self, ctx, role: discord.Role, level_xp: int):
     vocabulary = speech_setting(ctx.guild.id).level_system
     level_id = role.id
     server_id = role.guild.id
     with Database() as db:
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         db_level_id = db.execute('SELECT level_id FROM "default".servers_levels WHERE server_id = %s and level_id = %s', [db_server_id, level_id]).fetchone()
         db_level_id = db_level_id[0] if isinstance(db_level_id, tuple) else db_level_id
         if db_level_id:
             return await ctx.send(choice(vocabulary.level_add.the_same_data_start) + vocabulary.level_add.the_same_data_end)
         db.execute('INSERT INTO "default".servers_levels(server_id, level_id, level_xp) VALUES (%s, %s, %s)', [db_server_id, level_id, level_xp])
         await ctx.send(choice(vocabulary.level_add.success).format(role.mention))
Esempio n. 20
0
 async def level_delete(self, ctx, role: discord.Role):
     vocabulary = speech_setting(ctx.guild.id).level_system
     level_id = role.id
     server_id = role.guild.id
     with Database() as db:
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         db_level_id = db.execute('SELECT level_id FROM "default".servers_levels WHERE server_id = %s and level_id = %s', [db_server_id, level_id]).fetchone()
         db_level_id = db_level_id[0] if isinstance(db_level_id, tuple) else db_level_id
         if not db_level_id:
             return await ctx.send(choice(vocabulary.level_delete.level_does_not_exist_start) + vocabulary.level_delete.level_does_not_exist_end)
         db.execute('DELETE FROM "default".servers_levels WHERE server_id = %s and level_id = %s', [db_server_id, level_id])
         await ctx.send(choice(vocabulary.level_delete.success))
Esempio n. 21
0
 async def level_update(self, ctx, role: discord.Role, level_xp: int):
     vocabulary = speech_setting(ctx.guild.id).level_system
     level_id = role.id
     server_id = role.guild.id
     with Database() as db:
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         db_level_id = db.execute('SELECT level_id FROM "default".servers_levels WHERE server_id = %s and level_id = %s', [db_server_id, level_id]).fetchone()
         db_level_id = db_level_id[0] if isinstance(db_level_id, tuple) else db_level_id
         if not db_level_id:
             return await ctx.send(choice(vocabulary.level_update.level_does_not_exist_start) + vocabulary.level_update.level_does_not_exist_end)
         db_level_xp = db.execute('SELECT level_xp FROM "default".servers_levels WHERE server_id = %s and level_id = %s', [db_server_id, level_id]).fetchone()[0]
         if db_level_xp == level_xp:
             return await ctx.send(choice(vocabulary.level_update.the_same_data))
         db.execute('UPDATE "default".servers_levels SET level_xp = %s WHERE server_id = %s and level_id = %s', [level_xp, db_server_id, level_id])
         await ctx.send(choice(vocabulary.level_update.success_start) + vocabulary.level_update.success_end.format(role.mention, level_xp))
Esempio n. 22
0
 def embed_dog(author):
     vocabulary = speech_setting(author.guild.id).chatting
     allowed_extension = ['jpg', 'jpeg', 'png']
     file_extension, url = '', ''
     while file_extension not in allowed_extension:
         contents = requests.get(
             'https://some-random-api.ml/img/dog').json()
         url = contents['link']
         file_extension = re.search("([^.]*)$", url).group(1).lower()
     data = url
     embed = discord.Embed(
         title=vocabulary.embed_dog.title,
         description=vocabulary.embed_dog.description.format(
             author.mention),
         colour=discord.Colour.purple())
     embed.set_image(url=data)
     return embed
Esempio n. 23
0
 async def show_chat_birthdays(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     server_id = ctx.guild.id
     with Database() as db:
         birthdays_chat_id = db.execute(
             '''SELECT birthdays_chat FROM "default".servers_chats
                                          WHERE server_id = (
                                              SELECT id FROM "default".servers
                                              WHERE discord_server_id = %s)''',
             [server_id]).fetchone()[0]
         if not birthdays_chat_id:
             return await ctx.send(
                 choice(vocabulary.show_chat_birthdays.no_info))
         birthdays_chat = self.bot.get_channel(birthdays_chat_id).mention
     await ctx.send(
         choice(
             vocabulary.show_chat_birthdays.success).format(birthdays_chat))
Esempio n. 24
0
 async def wikipedia_search(self, ctx, *message):
     wikipedia.set_lang(current_language(ctx.guild.id))
     vocabulary = speech_setting(ctx.guild.id).wikipedia
     if not message:
         return await self.wikipedia_search_error(
             ctx, commands.MissingRequiredArgument)
     try:
         if message[0] == "<@!825433682205606000>":
             site = "https://samuraibot.brizy.site/"
             embed = discord.Embed(description=choice(
                 vocabulary.wikipedia_search.description_about_me).format(
                     site),
                                   colour=discord.Colour.purple())
             return await ctx.send(embed=embed)
         await ctx.send(wikipedia.summary(message))
     except Exception:
         await ctx.send(choice(vocabulary.wikipedia_search.error))
Esempio n. 25
0
 async def delete_chat_birthday(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     server_id = ctx.guild.id
     with Database() as db:
         db.execute(
             'SELECT id FROM "default".servers WHERE discord_server_id = %s',
             [server_id])
         db_server_id = db.fetchone()[0]
         db.execute(
             'SELECT birthdays_chat FROM "default".servers_chats WHERE server_id = %s',
             [db_server_id])
         birthdays_chat_id = db.fetchone()[0]
         if not birthdays_chat_id:
             return await ctx.send(choice(vocabulary.delete_chat_birthday))
         db.execute(
             'UPDATE "default".servers_chats SET birthdays_chat = null WHERE server_id = %s',
             [db_server_id])
     await ctx.send(choice(vocabulary.delete_chat_birthday.success))
Esempio n. 26
0
 async def delete_birthdays(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).birthdays
     user_id = ctx.message.author.id
     with Database() as db:
         db.execute(
             'SELECT id FROM "default".users WHERE discord_user_id = %s',
             [user_id])
         db_user_id = db.fetchone()[0]
         db.execute(
             'SELECT date FROM "default".birthdays WHERE user_id = %s',
             [db_user_id])
         db_date = db.fetchone()
         if db_date is None:
             return await ctx.send(
                 choice(vocabulary.delete_birthday.date_does_not_exist_yet))
         db.execute('DELETE FROM "default".birthdays WHERE user_id = %s',
                    [db_user_id])
         await ctx.send(choice(vocabulary.delete_birthday.success))
Esempio n. 27
0
 async def level_dashboard(self, ctx, limit=10):
     vocabulary = speech_setting(ctx.guild.id).level_system
     server = ctx.guild
     server_id = server.id
     with Database() as db:
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         db_server_levels = db.execute('SELECT level_id FROM "default".servers_levels WHERE server_id = %s', [db_server_id]).fetchall()
         if not db_server_levels:
             return await ctx.send(choice(vocabulary.level_dashboard.no_info))
         embed = discord.Embed(
             title=vocabulary.level_dashboard.title,
             colour=discord.Colour.purple()
         )
         embed.set_thumbnail(url=server.icon_url)
         db.execute('SELECT user_id, level, xp FROM "default".users_levels WHERE server_id = %s ORDER BY xp DESC LIMIT %s', [db_server_id, limit])
         data = []
         for db_user_id, db_user_level, db_user_xp in db.fetchall():
             user_id = db.execute('SELECT discord_user_id FROM "default".users WHERE id = %s', [db_user_id]).fetchone()[0]
             user = get(server.members, id=user_id)
             print(user, user_id)
             level = vocabulary.level_dashboard.no_level if not get(server.roles, id=db_user_level) else get(server.roles, id=db_user_level).mention
             data.append([user, level, db_user_xp])
         for i in range(min(3, len(data))):
             user, level, xp = data[i]
             embed.add_field(
                 name=f"{i + 1}. {user.name}",
                 value=f"{getattr(vocabulary.level_dashboard.top_three_phrases, str(i + 1))} {user.mention}\n**level: {level}\nxp: {xp}**",
                 inline=False
             )
         data = data[min(3, len(data)):]
         output = []
         for pos, line in enumerate(data):
             user, level, xp = line
             output.append(f"**{pos + 4}.{user.mention}** - {' '.join([level, f'**{xp} xp**'])}")
         if output:
             embed.add_field(
                 name=choice(vocabulary.level_dashboard.embed_field_title),
                 value="\n".join(output),
                 inline=False
             )
         await ctx.send(embed=embed)
Esempio n. 28
0
 async def level(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).level_system
     server = ctx.guild
     server_id = server.id
     user = ctx.message.author
     user_id = user.id
     with Database() as db:
         db_user_id = db.execute('SELECT id FROM "default".users WHERE discord_user_id = %s', [user_id]).fetchone()[0]
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         db_server_levels = db.execute('SELECT level_id FROM "default".servers_levels WHERE server_id = %s', [db_server_id]).fetchall()
         if not db_server_levels:
             return await ctx.send(choice(vocabulary.level.no_info))
         db_user_level, db_user_xp = db.execute('SELECT level, xp FROM "default".users_levels WHERE server_id = %s and user_id = %s', [db_server_id, db_user_id]).fetchone()
         db_user_level = vocabulary.level.no_level if not get(server.roles, id=db_user_level) else get(server.roles, id=db_user_level).mention
         embed = discord.Embed(
             title=vocabulary.level.title.format(user.name),
             description=choice(vocabulary.level.description_start) + vocabulary.level.description_end.format(user.mention, db_user_level, db_user_xp),
             colour=discord.Colour.purple()
         )
         embed.set_thumbnail(url=user.avatar_url)
         await ctx.send(embed=embed)
Esempio n. 29
0
 async def level_show(self, ctx):
     vocabulary = speech_setting(ctx.guild.id).level_system
     server = ctx.guild
     server_id = server.id
     with Database() as db:
         db_server_id = db.execute('SELECT id FROM "default".servers WHERE discord_server_id = %s', [server_id]).fetchone()[0]
         levels = db.execute('SELECT level_id, level_xp FROM "default".servers_levels WHERE server_id = %s ORDER BY level_xp DESC', [db_server_id]).fetchall()
         if not levels:
             data = choice(vocabulary.level_show.no_info)
         else:
             data = ""
             for level, xp in levels:
                 role = get(server.roles, id=level)
                 data += f"\n**{role.mention}** - **{xp} xp**"
         embed = discord.Embed(
             title=choice(vocabulary.level_show.title),
             description=data,
             colour=discord.Colour.purple()
         )
         embed.set_thumbnail(url=server.icon_url)
         embed.set_footer(text=vocabulary.level_show.footer)
         await ctx.send(embed=embed)
Esempio n. 30
0
    async def translate(self, ctx, *words):
        vocabulary = speech_setting(ctx.guild.id).translator
        if not words:
            return await ctx.send(choice([vocabulary.translate.no_words]))
        if len(words) == 1 and words[0] in self.google_translator_keys.keys():
            return await ctx.send(
                choice([vocabulary.translate.no_words_plus_languages]))
        if len(words) == 1:
            return await ctx.send(
                choice([vocabulary.translate.word_without_language]))
        if len(words) == 2 and all(i in self.google_translator_keys
                                   for i in words):
            return await ctx.send(choice([vocabulary.translate.only_languages])
                                  )
        if len(words) >= 2 and not any(i in self.google_translator_keys
                                       for i in words):
            return await ctx.send(choice([vocabulary.translate.no_languages]))
        if words[0] in self.google_translator_keys and words[
                1] in self.google_translator_keys:
            source, target = words[:2]
        else:
            source, target = "auto", words[0]
        message = " ".join(
            filter(lambda x: x not in self.google_translator_keys, words))

        if target == source:
            translated_message = message
        else:
            translator = GoogleTranslator(source=source, target=target)
            translated_message = translator.translate(message)

        embed = discord.Embed(title=vocabulary.translate.title,
                              description=translated_message,
                              colour=discord.Colour.purple())
        embed.set_footer(text=vocabulary.translate.footer.format(message))
        async with ctx.typing():
            await ctx.send(embed=embed)