Example #1
0
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.")
Example #2
0
 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)
Example #3
0
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
Example #4
0
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
Example #5
0
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