Example #1
0
    async def wikipedia_search(self, ctx, *, args):

        wikipedia.set_lang('es')

        wiki = wikipediaapi.Wikipedia('es')

        wiki_logo = """
        https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Wikipedia_svg_logo.svg/1200px-Wikipedia_svg_logo.svg.png
        """

        def get_summary(page):
            p = page.summary.split('.')
            sentences = f'{p[0]}. {p[1]}. {p[2]}. {p[3]}. {p[4]}.'
            return sentences

        result = wikipedia.search(args, results=10)
        embed = discord.Embed(color=rbColor())
        embed.set_thumbnail(url=wiki_logo)
        embed.add_field(name='Estos fueron los resultados de tu búsqueda:',
                        value=f'1. **{result[0]}**\n2. **{result[1]}**\n'
                        f'3. **{result[2]}**\n4. **{result[3]}**\n'
                        f'5. **{result[4]}**\n6. **{result[5]}**\n'
                        f'7. **{result[6]}**\n8. **{result[7]}**\n'
                        f'9. **{result[8]}**\n10. **{result[9]}**',
                        inline=False)
        embed.set_footer(text='Escribe el número correspondiente'
                         'al artículo que deseas obtener.')
        await ctx.send(embed=embed)

        def is_author(m):
            return m.author == ctx.author

        try:
            selected_page = await self.bot.wait_for('message',
                                                    check=is_author,
                                                    timeout=45.0)
        except asyncio.TimeoutError:
            await ctx.send('Tu petición expiró.')

        else:
            index = int(selected_page.content) - 1
            page = wiki.page(result[index])
            e = discord.Embed(color=rbColor(),
                              title=page.title,
                              description=get_summary(page))
            e.set_author(name=f'{page.title} en Wikipedia',
                         url=page.canonicalurl)
            e.set_thumbnail(url=wiki_logo)
            await ctx.send(embed=e)
Example #2
0
    async def gay(self, ctx, member: Member = None):
        gay_percentage = randint(0, 100)
        e = Embed(color=rbColor())

        if member is not None:
            e.add_field(name='Según mis cálculos...',
                        value=f'{member.name} es un **{gay_percentage}%**'
                        ' homosexual :rainbow_flag:')
        else:
            e = Embed(color=rbColor())
            e.add_field(name='Según mis cálculos...',
                        value=f'Sos un **{gay_percentage}%**'
                        ' homosexual :rainbow_flag:')

        await ctx.send(embed=e)
Example #3
0
 async def info(self, ctx):
     app = await self.bot.application_info()
     prefix = self.bot.command_prefix
     users = len(self.bot.users)
     e = Embed(description='**RoboTito** es un bot centrado en la'
               ' facilidad de uso, la variedad de'
               ' comandos y la diferenciación de sí'
               ' mismo por sobre otros utilizando'
               ' funcionalidades innovadoras o pocas'
               ' veces vistas.',
               color=rbColor())
     e.set_thumbnail(url=app.icon_url)
     e.add_field(name='Servidores',
                 value='Participo en un total de:'
                 f' **{len(self.bot.guilds)}** servidores.',
                 inline=False)
     e.add_field(name='Creador',
                 value=f'Fui creado por: **{app.owner}**',
                 inline=False)
     e.add_field(name='Prefijo',
                 value=f'Mis prefijo es: {prefix[0]}',
                 inline=False)
     e.add_field(name='Usuarios',
                 value=f'Puedo ver a un total de **{users}** usuarios entre'
                 ' todos los servidores en los que participo.',
                 inline=False)
     e.add_field(name='Invitación',
                 value='Puedes invitarme a tu servidor a través de este'
                 ' [link](https://discord.com/api/oauth2/authorize?'
                 'client_id=820819824669491210&permissions=8'
                 '&scope=bot).',
                 inline=False)
     await ctx.send(embed=e)
Example #4
0
    async def searchimage(self, ctx, *, query: str):
        async def search_image(query: str):
            url = "https://bing-image-search1.p.rapidapi.com/images/search"
            querystring = {"q": query, "mkt": "es-AR", "count": "30"}
            headers = {
                'x-rapidapi-key': Utility.get_rapidapi(),
                'x-rapidapi-host': "bing-image-search1.p.rapidapi.com"
            }
            async with ClientSession() as session:
                async with session.get(url=url,
                                       headers=headers,
                                       params=querystring) as r:
                    if r.status == 200:
                        json_response = await r.json()
                        index = randint(0, 30)
                        return json_response['value'][index]['contentUrl']
                    else:
                        return

        if not query:
            await ctx.send('Tienes que buscar algo.')
        else:
            e = discord.Embed(color=rbColor(),
                              description=f'**{query}**, enlace original:'
                              f' [aquí]({await search_image(query)})')
            e.set_author(name='Imágenes de Bing',
                         icon_url='https://pluspng.com/img-png/'
                         'bing-logo-png-png-ico-512.png')
            e.set_image(url=await search_image(query))
            await ctx.send(embed=e)
Example #5
0
 async def utctime(self, ctx):
     e = discord.Embed(title=f'Son las{str(datetime.utcnow())[10:][:6]}'
                       ' (UTC)',
                       color=rbColor())
     e.set_author(name='Tiempo del meridiano de Greenwich',
                  url='https://time.is/es/UTC',
                  icon_url=timezone_icon)
     await ctx.send(embed=e)
Example #6
0
    async def penis(self, ctx, member: Member = None):
        penis_size = randint(0, 100)
        e = Embed(color=rbColor())

        if member is not None:
            e.add_field(name=f'El miembro reproductor de {member.name} mide:',
                        value=f'**{penis_size}**'
                        f' {VarietyHelp.get_penis(penis_size)}.',
                        inline=False)
        else:
            e = Embed(color=rbColor())
            e.add_field(name='Tu miembro reproductor mide:',
                        value=f'**{penis_size}**'
                        f' {VarietyHelp.get_penis(penis_size)}.',
                        inline=False)

        await ctx.send(embed=e)
Example #7
0
 async def eightball(self, ctx, *, args):
     if args is not None:
         e = Embed(color=rbColor())
         e.add_field(name=f'**{VarietyHelp.get_8ball()}**',
                     value=f'*"{args}"*')
         await ctx.send(embed=e)
     else:
         await ctx.send('Deberías preguntar algo.')
Example #8
0
 def rr_death(winner, loser):
     e = Embed(color=rbColor())
     e.add_field(name=choice(rr['death']),
                 value=f'{loser} murió, es una pena.'
                 f' {winner} ganó esta ronda.',
                 inline=False)
     e.set_image(url=Helpers.gif('russianroulette'))
     return e
Example #9
0
 async def documentation(self, ctx):
     e = Embed(color=rbColor(),
               description='[RoboTito en **GitBook**]'
               '(https://ticiano-morvan.gitbook.io)')
     e.set_author(name='Documentación',
                  icon_url='https://create.twu.ca/wp-content/uploads/'
                  '2017/08/gitbook-logo-small.png')
     await ctx.send(embed=e)
Example #10
0
    async def exchange(self,
                       ctx,
                       currency_from: str,
                       currency_to: str,
                       amount: int = None):
        async def exchangeRate(cFrom: str, cTo: str):
            u = f'https://exchangerate-api.p.rapidapi.com/rapid/latest/{cFrom}'
            headers = {
                'x-rapidapi-key': Utility.get_rapidapi(),
                'x-rapidapi-host': "exchangerate-api.p.rapidapi.com"
            }
            async with ClientSession() as session:
                async with session.get(url=u, headers=headers) as r:
                    if r.status == 200:
                        json_response = await r.json()
                        return json_response['rates'][cTo]
                    else:
                        return

        fromCurrency = str.upper(currency_from)
        toCurrency = str.upper(currency_to)
        exchange = float(await exchangeRate(fromCurrency, toCurrency))

        if amount is not None:
            result = round(exchange * amount)
            e = discord.Embed(color=rbColor())
            e.set_author(name='Conversión de monedas',
                         icon_url='https://cdn0.iconfinder.com/data/icons/'
                         'business-cool-vector-3/128/120-512.png',
                         url='https://rapidapi.com/exchangerateapi/api/'
                         'exchangerate-api/')
            e.add_field(name=f'La conversión de ${amount} {fromCurrency}'
                        f' a {toCurrency} es:',
                        value=f'${result} {toCurrency}, a fecha de hoy.')
            await ctx.send(embed=e)
        else:
            e = discord.Embed(color=rbColor())
            e.set_author(name='Tasa de cambio',
                         icon_url='https://cdn0.iconfinder.com/data/icons/'
                         'business-cool-vector-3/128/120-512.png',
                         url='https://rapidapi.com/exchangerateapi/api/'
                         'exchangerate-api/')
            e.add_field(name=f'Por cada $1 {fromCurrency}, deberás pagar:',
                        value=f'${exchange} {toCurrency}, a fecha de hoy.')
            await ctx.send(embed=e)
Example #11
0
 def language_embed(word, translation, fromlang, tolang):
     e = discord.Embed(title=translation,
                       description=f'La traducción de "{word}" del '
                       f'**{fromlang}** al **{tolang}**'
                       f' es {translation}.',
                       color=rbColor())
     e.set_footer(text='translate-python, por Terry Yin',
                  icon_url='attachment://image.png')
     return e
Example #12
0
    async def useravatar(self, ctx, member: User = None):
        e = Embed(color=rbColor())
        if member is not None:
            e.set_author(name=member.name, icon_url=member.avatar_url)
            e.set_image(url=member.avatar_url)
        else:
            e.set_author(name=ctx.author.name, icon_url=ctx.author.avatar_url)
            e.set_image(url=ctx.author.avatar_url)

        await ctx.send(embed=e)
Example #13
0
    def get_embed(type: str, author, member=None):
        e = Embed(color=rbColor())
        if member is not None:
            e.add_field(name=Helpers.header(f'h_{type}'),
                        value=Helpers.sentence(author, f'm_{type}', member))
        else:
            e.add_field(name=Helpers.header(f'h_{type}'),
                        value=Helpers.sentence(author, f'm_{type}'))

        e.set_image(url=Helpers.gif(type))
        return e
Example #14
0
    async def love(self, ctx, member: Member = None):
        love_probability = randint(0, 100)

        if member is not None:
            e = Embed(color=rbColor())
            e.add_field(name=f'El amor entre {member.name} y tú es del...',
                        value=f'**{love_probability}%**,'
                        f' {VarietyHelp.get_love(love_probability)}')
            e.set_image(url=VarietyHelp.get_love_gif(love_probability))
            await ctx.send(embed=e)
        else:
            await ctx.send('Deberías mencionar a alguien.')
Example #15
0
 async def championrole(self, ctx, role: str):
     if role in ['top', 'jg', 'mid', 'adc', 'support']:
         champ = get_role(role)
         e = create_embed(champ)
         await ctx.send(embed=e)
     else:
         e = Embed(color=rbColor())
         e.add_field(name='No reconocí ese rol.',
                     value=f'{role} no es un rol válido. Vuelve a'
                     ' intentarlo usando: **top**, **jg**,'
                     ' **mid**, **adc** o **support**.')
         await ctx.send(embed=e)
Example #16
0
 async def localtime(self, ctx, hours: int = None):
     if not hours:
         await ctx.send('Para averiguar la hora de tu zona horaria,'
                        ' ingresá la cantidad de horas de diferencia'
                        ' con el tiempo del meridiano de Greenwich.'
                        ' Por ejemplo, para Argentina (UTC -3)'
                        ' ingresá `-3` después del comando.')
     else:
         e = discord.Embed(title=f'Son las{Utility.get_local_time(hours)}',
                           color=rbColor())
         e.set_author(name='Tiempo de tu zona horaria',
                      icon_url=timezone_icon)
         await ctx.send(embed=e)
Example #17
0
 async def send_command_help(self, command):
     e = discord.Embed(color=rbColor(), description=command.help)
     e.set_author(name=f'Comandos - {command.name}',
                  url='https://ticiano-morvan.gitbook.io/spanish/comandos')
     aliases = command.aliases
     if aliases is not None:
         e.add_field(name="Aliases", value=", ".join(aliases), inline=False)
     e.add_field(name='Uso',
                 value=f'`{self.get_command_signature(command)}`',
                 inline=False)
     e.set_footer(text='Argumentos: <requerido> [opcional]')
     channel = self.get_destination()
     await channel.send(embed=e)
Example #18
0
    async def send_cog_help(self, cog):
        e = discord.Embed(color=rbColor(),
                          title=cog.qualified_name,
                          description=cog.description)
        e.add_field(name='Comandos',
                    value=await
                    MyHelp.get_all_commands(self, cog.get_commands()),
                    inline=False)

        e.set_footer(text='r.help <comando> para más información. '
                     '- <requerido> [opcional]')
        channel = self.get_destination()
        await channel.send(embed=e)
Example #19
0
 async def probability(self, ctx, *, args):
     if args is not None:
         probability = randint(0, 100)
         e = Embed(color=rbColor())
         e.add_field(name='La probabilidad de...',
                     value=f'"*{args}*"',
                     inline=False)
         e.add_field(name='Es de un...',
                     value=f'**{probability}%**',
                     inline=False)
         await ctx.send(embed=e)
     else:
         await ctx.send('Deberías preguntar algo.')
Example #20
0
 async def championname(self, ctx, *, name: str):
     champ = get_name(name)
     if champ is not None:
         e = create_embed(champ)
         await ctx.send(embed=e)
     else:
         e = Embed(color=rbColor())
         e.add_field(name='Hubo un error',
                     value='No pude reconocer a ese campeón, por'
                     ' favor, vuelve a intentarlo respetando'
                     ' mayúsculas y símbolos. Los nombres exactos'
                     ' que utlizo se encuentran en https://las.op.gg/'
                     'champion/statistics')
         await ctx.send(embed=e)
Example #21
0
    async def serverroles(self, ctx):
        e = Embed(color=rbColor())

        def roles(guild: Guild):
            all_roles = ' '
            for role in reversed(guild.roles):
                if role.name == '@everyone':
                    pass
                else:
                    all_roles += f'<@&{role.id}> ({len(role.members)})\n'
            return all_roles

        e.add_field(name='Todos los roles de este servidor:',
                    value=roles(ctx.guild))
        await ctx.send(embed=e)
Example #22
0
def create_embed(champ):
    index = str(champ)
    e = Embed(color=rbColor())
    e.set_author(name='Campeón de League of Legends',
                 url=champs[index]['lolpage'],
                 icon_url='https://img1.wikia.nocookie.net/'
                 '__cb20150402234343/leagueoflegends/images/1/12/'
                 'League_of_Legends_Icon.png')
    e.add_field(name=f"{champs[index]['name']}, {champs[index]['header']}",
                value=champs[index]['description'],
                inline=False)
    e.add_field(name='Objetos, runas y builds:',
                value=f"[OP.GG]({champs[index]['op.gg']})",
                inline=False)
    e.set_image(url=champs[index]['icon'])
    return e
Example #23
0
 async def github(self, ctx):
     e = Embed(color=rbColor(),
               title='GitHub',
               description='[Repositorio](https://github.com/'
               'Ti7oyan/RoboTito)')
     e.set_thumbnail(url='https://www.shareicon.net/data/2016/06/20/'
                     '606964_github_4096x4096.png')
     e.add_field(name='Formas de contribuir:',
                 value='1. Avisándonos de errores: [**Issues**]'
                 '(https://github.com/Ti7oyan/RoboTito/issues)\n'
                 '2. Proponiendo cambios: [**PRs**]'
                 '(https://github.com/Ti7oyan/RoboTito/pulls)\n'
                 '3. Programando: [**Contributing**]'
                 '(https://github.com/Ti7oyan/RoboTito/blob/master/'
                 'CONTRIBUTING.md)\n')
     await ctx.send(embed=e)
Example #24
0
    async def url_shortener(self, ctx, *, url):
        async def shortener_api(request: str):
            key = Utility.get_cuttly()
            url = request
            api_url = f'https://cutt.ly/api/api.php?key={key}&short={url}'
            async with ClientSession() as session:
                async with session.post(url=api_url) as r:
                    if r.status == 200:
                        json_response = await r.json()
                        return json_response
                    else:
                        pass

        link = await shortener_api(url)
        e = discord.Embed(color=rbColor())
        e.add_field(name=link['url']['title'], value=link['url']['shortLink'])
        await ctx.send(embed=e)
Example #25
0
    def user(guild: discord.Guild,
             action,
             moderator: discord.Member,
             reason=None):
        e = discord.Embed(color=rbColor())
        e.set_author(name=guild.name, icon_url=guild.icon_url)
        e.set_thumbnail(url=guild.icon_url)
        if reason is not None:
            e.add_field(name=f'Fuiste {action} de {guild.name}.',
                        value=f'Debido a "{reason}".')
        else:
            e.add_field(name=f'Fuiste {action} de {guild.name}.',
                        value='Sin motivos especificados.')

        e.add_field(name='Moderador a cargo',
                    value=moderator.name,
                    inline=False)
        return e
Example #26
0
    def guild(guild: discord.Guild,
              member: discord.Member,
              action,
              moderator: discord.Member,
              reason=None):
        e = discord.Embed(color=rbColor())
        e.set_author(name=guild.name, icon_url=guild.icon_url)
        e.set_thumbnail(url=member.avatar_url)
        if reason is not None:
            e.add_field(name=f'{member.name} fue {action}.',
                        value=f'Por "{reason}".')
        else:
            e.add_field(name=f'{member.name} fue {action}.',
                        value='Sin motivos especificados.')

        e.add_field(name='Moderador a cargo:',
                    value=moderator.name,
                    inline=False)
        return e
Example #27
0
 def guild_embed(guild: Guild):
     """Returns an embed with information about the guild."""
     e = Embed(title=guild.name, color=rbColor())
     e.set_thumbnail(url=guild.icon_url)
     e.add_field(name='🚻 Miembros',
                 value=f'**{len(guild.members)}** miembros.')
     e.add_field(name='⚙ Categorías',
                 value=f'**{len(guild.categories)}** categorías.')
     e.add_field(name='📢 Canales',
                 value=f'**{len(guild.channels)}** canales en total.\n '
                 f'**{len(guild.text_channels)}** canales de texto.\n'
                 f' **{len(guild.voice_channels)}** canales de voz.')
     e.add_field(name='🤡 Emojis', value=f'**{len(guild.emojis)}** emojis.')
     e.add_field(name='🛡 Roles', value=f' **{len(guild.roles)}** roles.')
     e.add_field(name='🔧 Creación', value=Server.guild_creation(guild))
     e.add_field(name='🔗 Identificador', value=guild.id)
     e.add_field(name='🤴 Dueño/a del servidor',
                 value=f'**{guild.owner.mention}**')
     return e
Example #28
0
    async def covid19(self, ctx, *, country: str):
        async def covid19_request(country: str):
            """Returns information about a desired country."""

            url = "https://covid-19-data.p.rapidapi.com/country"
            query = {"name": country}
            headers = {
                'x-rapidapi-key': Utility.get_rapidapi(),
                'x-rapidapi-host': "covid-19-data.p.rapidapi.com"
            }

            async with ClientSession() as session:
                async with session.get(url=url, headers=headers,
                                       params=query) as r:
                    if r.status == 200:
                        json_response = await r.json()
                        return json_response
                    else:
                        return

        if not country:
            await ctx.send('Necesito que me digas el país del cual quieres'
                           ' conocer su información. **ATENCIÓN**: por'
                           ' motivos externos a RoboTito, necesito que'
                           ' escribas el nombre del país en inglés.')
        else:
            c19 = await covid19_request(country)
            e = discord.Embed(color=rbColor(),
                              title=f'COVID-19: {c19[0]["country"]}')
            e.add_field(name='Confirmados ⚠️',
                        value=format(c19[0]["confirmed"], ','),
                        inline=False)
            e.add_field(name='Recuperados ☑️',
                        value=format(c19[0]["recovered"], ','),
                        inline=False)
            e.add_field(name='Críticos ❗️',
                        value=format(c19[0]["critical"], ','),
                        inline=False)
            e.add_field(name='Muertes ❌',
                        value=format(c19[0]["deaths"], ','),
                        inline=False)
            await ctx.send(embed=e)
Example #29
0
    async def on_command_error(self, ctx, error):
        e = Embed(color=rbColor())

        if isinstance(error, commands.CommandNotFound):
            e.add_field(name='Comando erróneo',
                        value='No pude encontrar ese comando,'
                              ' por lo que puede que no exista,'
                              ' esté deshabilitado o lo hayas escrito mal.')
            await ctx.send(embed=e)

        elif isinstance(error, commands.MissingPermissions):
            e.add_field(name='No tienes los permisos necesarios',
                        value='Te faltan los permisos requeridos'
                              ' para usar este comando.')
            await ctx.send(embed=e)

        elif isinstance(error, commands.MissingRequiredArgument):
            e.add_field(name='Necesito más argumentos',
                        value='Escribe `r.help <comando>`'
                              ' para más información.')
            await ctx.send(embed=e)

        elif isinstance(error, commands.MemberNotFound):
            e.add_field(name='Usuario no encontrado',
                        value='Inténtalo otra vez, trata de mencionar'
                              ' al correcto.')
            await ctx.send(embed=e)

        elif isinstance(error, commands.CommandOnCooldown):
            e.add_field(name='¡Comando en enfriamiento!',
                        value='Por favor, reinténtalo en '
                              f'**{error.retry_after:.2f}** segundos.')
            await ctx.send(embed=e)

        else:
            e.add_field(name='Hubo un error inesperado.',
                        value='Si bien no pudimos detectar el error exacto,'
                              ' puedes obtener más información en la'
                              ' documentación. Usá `r.docs` para ir a ella.')
            await ctx.send(embed=e)
Example #30
0
class MyHelp(commands.MinimalHelpCommand):
    async def send_bot_help(self, mapping):
        ctx = self.context
        embed = discord.Embed(title='Ayuda de RoboTito')
        embed.set_thumbnail(url=ctx.me.avatar_url)
        usable = 0

        for cog, bot_commands in mapping.items():
            if filtered_commands := await self.filter_commands(bot_commands):
                amount_commands = len(filtered_commands)
                usable += amount_commands
                if cog:
                    name = cog.qualified_name
                else:
                    name = "Varios"

                embed.add_field(name=f'{name}',
                                value=f'**{amount_commands}** '
                                'comandos disponibles.')

        embed.description = f'**{len(bot.commands)}** comandos en total.'
        embed.color = rbColor()
        embed.set_footer(text='r.help <categoría> para más información.')
        await ctx.send(embed=embed)