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