async def mail_respond(ctx, address, *message): with open(r'C:\Users\Cindyarta\PycharmProjects\assimilate\mail.yaml', 'r+') as file: if ctx.author != bot.user: findlog_channel = yaml.load(file, Loader=yaml.FullLoader) for i in findlog_channel: if i == ctx.message.guild.id: findlog_channel.reverse() findguild_id = findlog_channel.index( int(ctx.message.guild.id)) roleid = findlog_channel[(findguild_id - 2)] if (" ".join(message[:])) != None: if get(ctx.guild.roles, id=roleid) in ctx.author.roles: userid = re.sub( '<', '', re.sub( '>', '', re.sub('!', '', re.sub('@', '', address)))) print(userid) user = bot.get_user(int(userid)) print(user) await ctx.send("Message response DMed to user.") await user.send( "Response to your mail sent by " + str(ctx.message.author) + " in " + str(bot.get_guild(ctx.message.guild.id)) + ": \n\n\"" + (" ".join(message[:])) + "\"\n.\n.\n.")
async def server(self, ctx): server_info = bot.get_guild(541251950730018818) online, offline, total = server_report(server_info) server_info_embed = discord.Embed( description= f"Online: {online}\nOffline: {offline}\nTotal members: {total}", color=0x6666FF) await ctx.send(embed=server_info_embed)
async def saytts(ctx, *, arg): try: if not devmode: guild = bot.get_guild(186610204023062528) mod_role = guild.get_role(219977258453041152) message_author = ctx.author is_mod = False for role in message_author.roles: if role == mod_role: is_mod = True if is_mod: await ctx.message.delete() await ctx.channel.send(arg, tts=True) else: await ctx.message.delete() await ctx.channel.send(arg, tts=True) except: await crash_handler() raise
async def quit(ctx): try: if not devmode: now = datetime.now() guild = bot.get_guild(186610204023062528) mod_role = guild.get_role(219977258453041152) message_author = ctx.author is_mod = False for role in message_author.roles: if role == mod_role: is_mod = True if is_mod: await ctx.channel.send("bot has been shutdown.") quit_message_embed = discord.Embed( title="bot has successfully shutdown.", color=0x00aeff) quit_message_embed.set_footer( text=str(now.strftime("%d/%m/%Y - %H:%M:%S"))) await bot.get_channel(772219545082396692).send( embed=quit_message_embed) await bot.loop.stop() await os._exit(1) else: await mod_only_command(ctx) else: now = datetime.now() await ctx.channel.send("bot has been shutdown.") quit_message_embed = discord.Embed( title="bot has successfully shutdown.", color=0x00aeff) quit_message_embed.set_footer( text=str(now.strftime("%d/%m/%Y - %H:%M:%S"))) await bot.get_channel(855228682166599741).send( embed=quit_message_embed) await bot.loop.stop() await os._exit(1) except: await crash_handler() raise
async def on_reaction_add(reaction, user): try: now = datetime.now() reacted_message = reaction.message reacted_message_content = reacted_message.content reacted_message_author = reaction.message.author reacted_message_author_roles = None guild = bot.get_guild(186610204023062528) mod_role = guild.get_role(219977258453041152) temp_mod_role = guild.get_role(816596360064532501) sky_marshal = guild.get_role(782224911648948244) if reaction.count == 1: if devmode: channel_report = bot.get_channel(855228720154935316) else: channel_report = bot.get_channel(413488194819194891) long_message = False mod_report = False description = "" #checks if the user is a webhook/deleted and doesnt report if so if reacted_message_author.discriminator != '0000': if user.guild == guild: for role in reacted_message_author.roles: if role.name != '@everyone': if reacted_message_author_roles is None: reacted_message_author_roles = str(role) else: reacted_message_author_roles = str( reacted_message_author_roles) + ", " + str( role) if reaction.emoji == '🚫': #if a user auto reacts 🚫 to their message, it just deletes it without reporting it if user == reacted_message_author: await reacted_message.delete() else: for role in user.roles: if role == mod_role or role == temp_mod_role or role == sky_marshal: #report_confirmation_embed = discord.Embed(title="The message has been reported.", color=0xff0000) await reacted_message.delete() mod_report = True description = "*The message has been deleted as it has been reported by an admin.*" #report_confirmation_message = await reacted_message.channel.send(embed=report_confirmation_embed) #await asyncio.sleep(2) #await report_confirmation_message.delete() reported_message_embed = discord.Embed( title="Reported Message - ID: " + str(reacted_message.id), description=description, color=0xff0000) reported_message_embed.set_thumbnail( url=reacted_message_author.avatar_url) reported_message_embed.add_field( name="Username", value=reacted_message_author.name, inline=True) reported_message_embed.add_field( name="Nickname", value=reacted_message_author.nick, inline=True) reported_message_embed.add_field( name="User ID", value="<@" + str(reacted_message_author.id) + ">", inline=True) reported_message_embed.add_field( name="Channel", value="<#" + str(reacted_message.channel.id) + ">", inline=True) reported_message_embed.add_field( name="User Roles", value=str(reacted_message_author_roles), inline=True) #if the message is too long if len(reacted_message_content) >= 1000: long_message = True message_length = len(reacted_message_content) reacted_message_content_part2 = reacted_message_content[ 999:message_length] reacted_message_content = reacted_message_content[ 0:999] reported_message_embed.add_field( name="Message", value=reacted_message_content, inline=False) reported_message_part2_embed = discord.Embed( description= "*The message is over 1000 characters, so it has been split into 2 Discord embeds.*", color=0xff0000) reported_message_part2_embed.add_field( name="Message (part 2)", value=reacted_message_content_part2, inline=False) reported_message_part2_embed.set_footer( text="Reported by " + str(user.name) + "#" + str(user.discriminator) + " • " + str(now.strftime("%d/%m/%Y - %H:%M:%S")), icon_url=user.avatar_url) else: #if the message only contains an attachment if len(reacted_message_content) != 0: reported_message_embed.add_field( name="Message", value=reacted_message_content, inline=False) else: reported_message_embed.add_field( name="Attachment", value= "*The reported message only contained an attachment; make sure to have it saved before reporting it as the bot cannot currently save (deleted) pictures. You can also give out a description of the attachment below*", inline=False) reported_message_embed.set_footer( text="Reported by " + str(user.name) + "#" + str(user.discriminator) + " • " + str(now.strftime("%d/%m/%Y - %H:%M:%S")), icon_url=user.avatar_url) await channel_report.send( embed=reported_message_embed) if long_message == True: await channel_report.send( embed=reported_message_part2_embed) elif reaction.count > 1: if reaction.emoji == '🚫': #if a user auto reacts 🚫 to their message, it just deletes it without reporting it if user == reacted_message_author: await reacted_message.delete() else: for role in user.roles: if role == mod_role or role == temp_mod_role or role == sky_marshal: await reacted_message.delete() #put crash handler in another function except: await crash_handler() raise