)
        else:
            await ctx.send(
                'D--> Unfortunately, I must now listen to the lower classes.')

    @ignoreplebs.error
    async def ignoreplebs_error(ctx, error):
        if isinstance(error, MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        raise error

    @commands.command()
    @commands.bot_has_permissions(send_messages=True)
    @commands.has_guild_permissions(manage_roles=True)
    async def togglelatex(ctx):
        if guild_config.toggle(ctx, 'enablelatex'):
            await ctx.send('D--> Latex functions have been enabled.')
        else:
            await ctx.send('D--> Latex functions have been disabled.')

    @togglelatex.error
    async def togglelatex_error(ctx, error):
        if isinstance(error, MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        raise error


bot.add_cog(GuildConfiguration(bot))
Exemple #2
0
    @commands.bot_has_permissions(send_messages=True)
    async def respond(self, ctx, *, query=''):
        admin = ctx.guild.get_member(CONST_ADMINS[1])
        embed = dc.Embed(color=admin.color if admin else dc.Color(0x00FF00), )
        embed.set_author(
            name=f'{admin.name if admin else "Drew LinkyBot"} says:',
            icon_url=admin.avatar_url if admin else url_bank.linky_icon,
        )
        if query.strip().lower() == 'state laws':
            if not self.laws:
                embed.description = f"I'm afraid I can't do that, {ctx.author.name}."
            else:
                embed.description = self.laws
            await ctx.send(embed=embed)
            return
        if self.linky_rhg:
            embed.set_image(url=url_bank.linky_rare)
            await ctx.send(embed=embed)
            return
        embed.description = self.random_linky(ctx.message.clean_content[11:])
        await ctx.send(embed=embed)

    @respond.error
    async def respond_error(self, ctx, error):
        if isinstance(error, commands.BotMissingPermissions):
            return
        raise error


bot.add_cog(LinkyBotAI(bot))
        embed = dc.Embed(
            color=ctx.author.color,
            timestamp=datetime.utcnow(),
            description=
            f'**Message counts since midnight UTC or bot start:**\n{msg_counts}',
        )
        embed.set_author(name=f'Daily counts for {ctx.author}',
                         icon_url=ctx.author.avatar_url)
        embed.add_field(name='Users Gained:',
                        value=self.daily_usr[ctx.guild.id]['join'])
        embed.add_field(name='Users Lost:',
                        value=self.daily_usr[ctx.guild.id]['leave'])
        embed.add_field(
            name='**DISCLAIMER**:',
            value=
            'Counts may not be accurate if the bot has been stopped at any point during the day.\n'
            'Counts will reset upon midnight UTC, upon which an automated message will display.',
            inline=False,
        )
        await guild_config.log(ctx.guild, 'modlog', embed=embed)

    @force_daily_post.error
    async def force_daily_post_error(self, ctx, error):
        if isinstance(error, commands.MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        raise error


bot.add_cog(DailyCounter(bot))
    async def generate_movie(self, ctx, total: limit_pulls()=DEFAULT_TOTAL):
        with (
            open(_dungeons) as names, open(_descriptors) as descriptors,
            open(_daves) as firsts, open(_ryders) as lasts,
            ):
            pools = self.sample((names, descriptors, firsts, lasts), total)
            embed_desc = '\n'.join(f'{f} {l} in the {n} of {d}{"! "[random.randrange(2)]}' for n, d, f, l in pools)
        await self.send(ctx, 'Your sick movie names:', embed_desc)

    @generate_movie.error
    async def generate_movie_error(self, ctx, error):
        if isinstance(error, commands.BotMissingPermissions):
            return
        raise error

    @generate.command(name='trollname', aliases=['trollnames', 'troll', 'trolls'])
    @commands.bot_has_permissions(send_messages=True) 
    async def generate_troll_names(self, ctx, total: limit_pulls(12)=12):
        names = (self.troll_name() for _ in range(2*total))
        embed_desc = '\n'.join(f'{f} {l}' for f, l in zip(*[names] * 2))
        await self.send(ctx, 'Your troll names:', embed_desc)

    @generate_troll_names.error
    async def generate_troll_names_error(self, ctx, error):
        if isinstance(error, commands.BotMissingPermissions):
            return
        raise error


bot.add_cog(BullshitGenerator(bot))
Exemple #5
0
        print('D--> Dumping logs...')
        self.log_channel = self.bot.get_channel(log_chid)
        self.report_log.start()

    @tasks.loop(hours=1)
    async def report_log(self):
        now = datetime.utcnow()
        with open('discord.log', 'rb') as logfile:
            if (code := logfile.read()):
                logfile.seek(0)
                await self.log_channel.send(f'ArquiusBot Log @ {now}',
                                            file=dc.File(
                                                logfile, f'errors.log'))
        with open('discord.log', 'r+') as logfile:
            if not (code := logfile.read()): return
            logfile.truncate(0)
            self._post_data.update(api_paste_code=code,
                                   api_paste_name=f'ArquiusBot Log {now}')
            async with aiohttp.ClientSession() as session:
                resp = await session.post(
                    'https://pastebin.com/api/api_post.php',
                    data=self._post_data)
                if resp.status != 200:
                    raise LoggingError(
                        f'Error {resp.status}: {await resp.text()}')
                await self.log_channel.send(
                    f'ArquiusBot Log {now} @ <{await resp.text()}>')


bot.add_cog(LogManager(bot))
        
    @role_addcategory.error
    async def role_addcategory_error(self, ctx, error):
        if isinstance(error, commands.MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        raise error

    @role.command('delcategory')
    @commands.has_permissions(manage_roles=True)
    async def role_delcategory(self, ctx, category: str):
        try:
            del self.data[ctx.guild.id][category]
        except KeyError:
            await ctx.send(response_bank.role_delcategory_error)
            return
        self.data_save()
        await ctx.send(
            response_bank.role_delcategory_confirm.format(category=category)
            )                   

    @role_delcategory.error
    async def role_delcategory_error(self, ctx, error):
        if isinstance(error, commands.MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        raise error


bot.add_cog(RoleManager(bot))
Exemple #7
0
        await ctx.send(response_bank.batch_save_confirm.format(name=name))

    @batch_save.error
    async def batch_save_error(self, ctx, error):
        raise error

    @batch.command(name='exec')
    async def batch_exec(self, ctx, name):
        if not os.path.exists(fp := os.path.join(_cmd_dir, f'{name}.txt')):
            await ctx.send(
                response_bank.batch_exec_name_error.format(name=name))
            return
        await ctx.send(response_bank.batch_exec_start.format(name=name))
        with open(fp, 'r') as cmdfile:
            msg = ctx.message
            for line in cmdfile:
                msg.content = line.strip()
                try:
                    await self.bot.process_commands(msg)
                except Exception as exc:
                    await ctx.send(f'{type(exc).__name__}: {"".join(exc.args)}'
                                   )
                    raise

    @batch_exec.error
    async def batch_exec_error(self, ctx, error):
        raise error


bot.add_cog(BatchCommands(bot))
Exemple #8
0
            await ctx.send(response_bank.channel_unban_role_error)
            return
        self.remove((ctx.guild.id, member.id, role.id))
        if guild_config.getlog(ctx.guild, 'modlog'):
            embed = dc.Embed(
                color=ctx.author.color,
                timestamp=ctx.message.created_at,
                description=
                f'{member.mention} has been unbanned in **#{ctx.channel}**')
            embed.add_field(name='**Role Revoked:**', value=f'`{role}`')
            embed.add_field(name='**Reason:**',
                            value=reason or 'None specified.')
            embed.add_field(name='**User ID:**', value=member.id, inline=False)
            embed.set_author(
                name=f'@{ctx.author} Undid Channel Ban:',
                icon_url=ctx.author.avatar_url,
            )
            await guild_config.log(ctx.guild, 'modlog', embed=embed)

    @role_mute_revoke.error
    async def role_mute_revoke_error(self, ctx, error):
        if isinstance(error, commands.MemberNotFound):
            await ctx.send(
                response_bank.channel_member_error.format(
                    member=error.args[0].split()[1]))
            return
        raise error


bot.add_cog(BanManager(bot))
    async def reactrole_add_error(self, ctx, error):
        if isinstance(error, commands.BotMissingPermissions):
            print(response_bank.channel_perms_error.format(ctx=ctx))
            return
        elif isinstance(error, commands.MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        elif isinstance(error, commands.RoleNotFound):
            await ctx.send(response_bank.role_error)
            return
        raise error

    @reactrole.command(name='del')
    @commands.bot_has_permissions(manage_messages=True, read_message_history=True)
    @commands.has_permissions(manage_roles=True)
    async def reactrole_del(self, ctx, msglink: str, emoji: EmojiUnion):
        pass

    @reactrole_del.error
    async def reactrole_del_error(self, ctx, error):
        if isinstance(error, commands.BotMissingPermissions):
            print(response_bank.channel_perms_error.format(ctx=ctx))
            return
        elif isinstance(error, commands.MissingPermissions):
            await ctx.send(response_bank.perms_error)
            return
        raise error


bot.add_cog(ReactRoleTagger(bot))
Exemple #10
0
        if msg.author.id == CONST_SRC:
            channel = msg.channel
            if (channel.id == guild_config.getlog(msg.guild, 'modlog')
                    or channel.category_id == 360676396172836867):
                return
            with open(_response_pool, 'a', encoding='utf-8') as respfile:
                respfile.write(msg.clean_content.strip() + '\n')

    # @commands.command(name='tensei')
    # @commands.bot_has_permissions(send_messages=True)
    # async def respond(self, ctx, *, query=''):
    #     src = ctx.guild.get_member(CONST_SRC)
    #     embed = dc.Embed(
    #         color=src.color if src else dc.Color(0xFF661F),
    #         )
    #     embed.set_author(
    #         name=f'{src.name if src else "TenseiBot"} says:',
    #         icon_url=src.avatar_url if src else url_bank.tensei_icon,
    #         )
    #     embed.description = self.generate_msg(ctx.message.clean_content[11:])
    #     await ctx.send(embed=embed)

    @respond.error
    async def respond_error(self, ctx, error):
        if isinstance(error, commands.BotMissingPermissions):
            return
        raise error


bot.add_cog(TenseiBotAI(bot))