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))
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)
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)
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))
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)
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))
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))
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)
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))
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)
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])
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)
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)
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))
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))
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)
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
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
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))
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))
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))
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
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))
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))
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))
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))
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)
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)
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)
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)