Exemple #1
0
 async def on_message_edit(self, before, after):
     cursor, conn = dbconnect()  #Opens connection to db
     if before.author.id != self.bot.user.id:
         message = before.content
         #author=str(before.author)[:-5]
         try:
             sql = ('''SELECT * FROM yoink_command
             WHERE (guild_id=%s AND yoink_type=%s and channel_id=%s);''')
             cursor.execute(sql,
                            (before.guild.id, "edit", before.channel.id))
             if cursor.fetchone() is None:
                 sql = (
                     '''INSERT INTO yoink_command(guild_id, user_id, channel_id, message_content, yoink_type)
                 VALUES (%s, %s, %s, %s, %s);''')
                 cursor.execute(sql, (before.guild.id, before.author.id,
                                      before.channel.id, message, "edit"))
                 conn.commit()
             else:
                 sql = ('''UPDATE yoink_command
                 SET user_id=%s, message_content=%s
                 WHERE (guild_id=%s AND yoink_type=%s AND channel_id=%s);'''
                        )
                 cursor.execute(sql,
                                (before.author.id, message, before.guild.id,
                                 "edit", before.channel.id))
                 conn.commit()
         except Exception as e:
             print(e)
     conn.close()  #Closes connection to db
Exemple #2
0
    async def setwelcomemsg(self, ctx, *, message=None):
        cursor, conn = dbconnect()  #Opens connection to db
        if message is None:
            message = (
                "Well well well... look who joined... welcome to hell %s")

        try:
            sql = (
                "SELECT * FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
            )
            cursor.execute(sql, (ctx.guild.id, "welcome_msg"))
            if cursor.fetchone() is not None:
                sql = ('''UPDATE guild_settings
                    SET setting_value=%s
                    WHERE (guild_id=%s AND setting=%s)''')
                cursor.execute(sql, (message, ctx.guild.id, "welcome_msg"))
                conn.commit()
            else:
                sql = (
                    '''INSERT INTO guild_settings(guild_id, setting, setting_value)
                    VALUES (%s, %s, %s)''')
                cursor.execute(sql, (ctx.guild.id, "welcome_msg", message))
                conn.commit()
            embed = discord.Embed(title="Welcome message set!",
                                  color=discord.Color.green())
            embed.add_field(name="Test message:",
                            value=message % ctx.author.mention)
            await ctx.send(embed=embed)
        except Exception as e:
            print(e)
        conn.close()  #Closes connection to db
Exemple #3
0
 async def setleavechannel(self, ctx, channel: discord.TextChannel):
     cursor, conn = dbconnect()  #Opens connection to db
     channel = channel.id
     try:
         sql = (
             "SELECT * FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
         )
         cursor.execute(sql, (ctx.guild.id, "leave_channel"))
         if cursor.fetchone() is not None:
             sql = ('''UPDATE guild_settings
                     SET setting_value=%s
                     WHERE (guild_id=%s AND setting=%s)''')
             cursor.execute(sql, (channel, ctx.guild.id, "leave_channel"))
             conn.commit()
         else:
             sql = (
                 '''INSERT INTO guild_settings(guild_id, setting, setting_value)
                 VALUES (%s, %s, %s)''')
             cursor.execute(sql, (ctx.guild.id, "leave_channel", channel))
             conn.commit()
     except Exception as e:
         print(e)
     embed = discord.Embed(title="Leave channel set!",
                           color=discord.Color.green())
     await ctx.send(embed=embed)
     conn.close()  #Closes connection to db
Exemple #4
0
 async def on_message_delete(self, message):
     cursor, conn = dbconnect()  #Opens connection to db
     if message.author.id != self.bot.user.id:
         try:
             sql = ('''SELECT * FROM yoink_command
             WHERE (guild_id=%s AND yoink_type=%s and channel_id=%s);''')
             cursor.execute(
                 sql, (message.guild.id, "delete", message.channel.id))
             if cursor.fetchone() is None:
                 sql = (
                     '''INSERT INTO yoink_command(guild_id, user_id, channel_id, message_content, yoink_type)
                 VALUES (%s, %s, %s, %s, %s);''')
                 cursor.execute(
                     sql, (message.guild.id, message.author.id,
                           message.channel.id, message.content, "delete"))
                 conn.commit()
             else:
                 sql = ('''UPDATE yoink_command
                 SET user_id=%s, message_content=%s
                 WHERE (guild_id=%s AND yoink_type=%s AND channel_id=%s);'''
                        )
                 cursor.execute(
                     sql, (message.author.id, message.content,
                           message.guild.id, "delete", message.channel.id))
                 conn.commit()
         except Exception as e:
             print(e)
     conn.close()  #Closes connection to db
Exemple #5
0
 async def removeblacklist(self, ctx, id: int):
     cursor, conn = dbconnect()  #Opens connection to db
     try:
         sql = (
             "SELECT row_id FROM banned_entities WHERE (guild_id=%s OR user_id=%s);"
         )
         cursor.execute(sql, (id, id))
         results = cursor.fetchone()
         if results is None:  #Not blacklisted
             await ctx.send(embed=discord.Embed(
                 title="This guild or user was not blacklisted!"))
             return
     except Exception as e:
         print(e)
     try:
         delsql = (
             "DELETE FROM banned_entities WHERE (guild_id=%s OR user_id=%s);"
         )
         cursor.execute(delsql, (id, id))
         conn.commit()
         await ctx.send(embed=discord.Embed(
             title="Guild/user removed from blacklist"))
     except Exception as e:
         print(e)
     conn.close()  #Closes connection to db
Exemple #6
0
    async def enablewelcomemsg(self, ctx, status):
        if status.lower() not in ["true",
                                  "false"]:  #Incorrect status parameter
            await ctx.send(embed=discord.Embed(
                title=
                "Incorrect parameters.\nMust be `.s enablewelcomemsg (true/false)`"
            ))
            return

        cursor, conn = dbconnect()  #Opens connection to db

        if status.lower() == "true":
            status = "True"
            title = "Welcome message enabled"
        else:
            status = "False"
            title = "Welcome message disabled"
        sql = (
            "SELECT * FROM guild_settings WHERE (guild_id=%s AND setting=%s)")
        cursor.execute(sql, (ctx.guild.id, "welcome_status"))
        if cursor.fetchone() is not None:
            sql = ('''UPDATE guild_settings
                SET setting_value=%s
                WHERE (guild_id=%s AND setting=%s)''')
            cursor.execute(sql, (status, ctx.guild.id, "welcome_status"))
            conn.commit()
        else:
            sql = (
                '''INSERT INTO guild_settings(guild_id, setting, setting_value)
                 VALUES (%s, %s, %s)''')
            cursor.execute(sql, (ctx.guild.id, "welcome_status", status))
            conn.commit()
        await ctx.send(
            embed=discord.Embed(title=title, color=discord.Color.dark_teal()))
        conn.close()  #Closes connection to db
Exemple #7
0
    async def exportsugg(self, ctx):
        try:
            cursor, conn = dbconnect()  #Opens connection to db
            sql = (
                "SELECT row_id, username, suggestion FROM suggestions WHERE (guild_id=%s)"
            )
            cursor.execute(sql, (ctx.guild.id, ))
            results = cursor.fetchall()
            conn.close()  #Closes connection to db
            if results is None:
                await ctx.send(embed=discord.Embed(
                    title="This server has no suggestions!"))
                return

            embed = discord.Embed(title=f"{ctx.guild}'s Suggestions:")
            x = 0
            for suggestion in results:
                embed.add_field(
                    name=f"ID: {results[x][0]};  Sent by: {results[x][1]}",
                    value=f"{results[x][2]}",
                    inline=False)
                x += 1
            await ctx.send(embed=embed)

        except Exception as e:
            print(e)
Exemple #8
0
 async def runsql(self, ctx, *, sql):
     cursor, conn = dbconnect()  #Opens connection to db
     try:
         cursor.execute(sql)
         conn.commit()
         await ctx.send(embed=discord.Embed(title="Query Executed",
                                            color=discord.Color.green()))
         conn.close()  #Closes connection to db
     except Exception as e:
         await ctx.send(embed=discord.Embed(title=f"Error occured: {e}"))
Exemple #9
0
 async def clearyoink(self, ctx):
     cursor, conn = dbconnect()  #Opens connection to db
     try:
         sql = ("DELETE FROM yoink_command")
         cursor.execute(sql)
         conn.commit()
         await ctx.send(embed=discord.Embed(
             title="**yoink_command** table cleared"))
         conn.close()  #Closes connection to db
     except Exception as e:
         await ctx.send(embed=discord.Embed(title=f"Error occured: {e}"))
Exemple #10
0
 async def suggestion(self, ctx, *, suggestion):
     try:
         cursor, conn = dbconnect()  #Opens connection to db
         sql = (
             '''INSERT INTO suggestions(guild_id, user_id, username, suggestion)
             VALUES (%s, %s, %s, %s)''')
         cursor.execute(sql, (ctx.guild.id, ctx.message.author.id,
                              str(ctx.message.author), suggestion))
         conn.commit()
         conn.close()  #Closes connection to db
         await ctx.send(embed=discord.Embed(
             title="Suggestion added! Thank you!"))
     except Exception as e:
         print(e)
Exemple #11
0
 async def clearYoinkTask(self):
     cursor, conn = dbconnect()  #Opens connection to db
     try:
         sql = ("DELETE FROM yoink_command")
         cursor.execute(sql)
         conn.commit()
         print(
             f"'yoink_commands' table cleared at {datetime.datetime.now()}")
         conn.close()  #Closes connection to db
     except Exception as e:
         channel = self.bot.get_channel(784243375783149568)
         await channel.send(embed=discord.Embed(
             title=
             f"Error occured while clearing 'yoink_commands' table: {e}"))
Exemple #12
0
 async def fetchrequests(self, ctx):
     cursor,conn=dbconnect() #Opens connection to db
     sql=("SELECT row_id, user_id, role_name, color FROM role_requests WHERE server_id=%s LIMIT 1;")
     cursor.execute(sql, (ctx.guild.id,))
     conn.commit()
     result=cursor.fetchone()
     if result is None:
         await ctx.send(embed=discord.Embed(title="No requests were found for this server!",color=discord.Color.red()))
         return
     embed=discord.Embed(title="Next Request:",color=discord.Color.gold())
     embed.add_field(name="ID",value=result[0])
     embed.add_field(name="User",value=f"<@{result[1]}>")
     embed.add_field(name="Role Name",value=result[2])
     embed.add_field(name="Color",value=result[3])
     await ctx.send(embed=embed)
     conn.close() #Closes connection to db
Exemple #13
0
    async def deletesugg(self, ctx, id: int):
        try:
            cursor, conn = dbconnect()  #Opens connection to db
            sql = ("DELETE FROM suggestions WHERE (row_id=%s AND guild_id=%s)")
            cursor.execute(sql, (id, ctx.guild.id))
            conn.commit()
            if cursor.rowcount == 0:
                await ctx.send(embed=discord.Embed(
                    title=
                    "Suggestion not found! Make sure to use the correct ID"))
            else:
                await ctx.send(embed=discord.Embed(title="Suggestion deleted!")
                               )
        except Exception as e:
            print(e)

        conn.close()  #Closes connection to db
Exemple #14
0
 async def resolverequest(self, ctx, role_id: int):
     cursor,conn=dbconnect() #Opens connection to db
     try:
         sql=('''SELECT * FROM role_requests WHERE (server_id=%s AND row_id=%s)''')
         cursor.execute(sql, (ctx.guild.id, role_id))
         if cursor.fetchone() is None:
             await ctx.send(embed=discord.Embed(title="Role ID not found!"))
             return
         
         sql=('''DELETE FROM role_requests
             WHERE (server_id=%s AND row_id=%s)''')
         cursor.execute(sql, (ctx.guild.id,role_id))
         conn.commit()
         await ctx.send(embed=discord.Embed(title="Request Resolved :D",color=discord.Color.green()))
     except Exception as e:
         print(e)
     conn.close() #Closes connection to db
Exemple #15
0
async def on_member_join(member):
    cursor, conn = dbconnect()  #Opens connection to db

    sql = (
        "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
    )
    cursor.execute(sql, (member.guild.id, "welcome_channel"))
    result = cursor.fetchone()
    if result is not None:  #Custom channel
        channel = member.guild.get_channel(int(result[0]))
    else:  #System channel
        channel = member.guild.system_channel

    sql = (
        "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
    )
    cursor.execute(sql, (member.guild.id, "welcome_status"))
    result = cursor.fetchone()

    if result is None or result[
            0] == "True":  #welcome_status does not exist or is true
        sql = (
            "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
        )
        cursor.execute(sql, (member.guild.id, "welcome_msg"))
        result = cursor.fetchone()
        if result is None:  #Custom welcome message does not exist
            message = "Well well well... look who joined... welcome to hell %s"
        else:  #Custom message does exist
            message = result[0]
        sql = (
            "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
        )
        cursor.execute(sql, (member.guild.id, "welcome_picture"))
        result = cursor.fetchone()
        if result is None:  #default url
            url = "https://media.tenor.co/images/3ccff8c4b2443d93811eac9b2fd56f11/raw"
        else:  #Custom url for image
            url = result[0]

        await channel.send(message % member.mention)
        embed = discord.Embed()
        embed.set_image(url=url)
        await channel.send(embed=embed)
    conn.close()  #Closes connection to db
Exemple #16
0
 async def unwarn(self, ctx, user: discord.Member, id: int):
     cursor,conn=dbconnect() #Opens connection to db
     try:
         sql=('''SELECT * FROM moderator_history WHERE (guild_id=%s AND user_id=%s AND row_id=%s);''')
         cursor.execute(sql, (ctx.guild.id, user.id,id))
         results=cursor.fetchone()
         if results is None:
             await ctx.send(embed=discord.Embed(title="Warning ID not found! Use `.s warnlist (@user)` to select the right ID!"))
             return
             
         sql=('''DELETE FROM moderator_history WHERE (guild_id=%s AND user_id=%s AND row_id=%s);''')
         cursor.execute(sql, (ctx.guild.id, user.id,id))
         conn.commit()
        
     except Exception as e:
         print (e)
     await ctx.send(embed=discord.Embed(title="Warning successfully deleted!"))
     conn.close() #Closes connection to db
Exemple #17
0
 async def warnlist(self, ctx, user: discord.Member):
     cursor,conn=dbconnect() #Opens connection to db
     try:
         sql=('''SELECT row_id, reason FROM moderator_history WHERE (guild_id=%s AND user_id=%s AND type=%s);''')
         cursor.execute(sql, (ctx.guild.id, user.id, "warn"))
         results=cursor.fetchall()
     except Exception as e:
         print (e)
     if len(results)==0:
         await ctx.send(embed=discord.Embed(title="This user has no history of warns!"))
         return
     embed=discord.Embed(title=f"{user}'s Warning History:",color=discord.Color.dark_blue())
     x=0
     for warn in results:
         embed.add_field(name=f"{x+1})  Warn ID: {results[x][0]}",value=f"Reason: {results[x][1]}")
         x+=1
     await ctx.send(embed=embed)
     conn.close() #Closes connection to db
Exemple #18
0
async def blacklist_check(ctx):
    try:
        cursor, conn = dbconnect()  #Opens connection to db
        sql = ("SELECT user_id, reason FROM banned_entities WHERE user_id=%s;")
        cursor.execute(sql, (ctx.author.id, ))
        result = cursor.fetchone()
        conn.close()  #Closes connection to db

        if result is not None:  #Blacklsited
            await ctx.send(embed=discord.Embed(
                title=
                f"You have been blacklisted from the bot for reason: {result[1]}! Contact PureCache#0001 to appeal!"
            ))

        return result is None

    except Exception as e:
        print(e)
Exemple #19
0
async def on_member_remove(member):
    cursor, conn = dbconnect()  #Opens connection to db

    sql = (
        "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
    )
    cursor.execute(sql, (member.guild.id, "leave_channel"))
    result = cursor.fetchone()
    if result is not None:
        channel = member.guild.get_channel(int(result[0]))
    else:
        channel = member.guild.system_channel

    sql = (
        "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
    )
    cursor.execute(sql, (member.guild.id, "leave_status"))
    result = cursor.fetchone()

    if result is None or result[
            0] == "True":  #welcome_status does not exist or is true
        sql = (
            "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
        )
        cursor.execute(sql, (member.guild.id, "leave_msg"))
        result = cursor.fetchone()
        if result is None:  #Custom welcome message does not exist
            message = "Adios %s..."
        else:  #Custom message does exist
            message = result[0]
        sql = (
            "SELECT setting_value FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
        )
        cursor.execute(sql, (member.guild.id, "leave_picture"))
        result = cursor.fetchone()
        if result is None:  #default url
            url = "https://media.giphy.com/media/ef0ZKzcEPOBhK/giphy.gif"
        else:  #Custom url for image
            url = result[0]
        await channel.send(message % member)
        embed = discord.Embed()
        embed.set_image(url=url)
        await channel.send(embed=embed)
    conn.close()  #Closes connection to db
Exemple #20
0
 async def yoink(self, ctx):
     cursor, conn = dbconnect()  #Opens connection to db
     try:
         sql = ('''SELECT * FROM yoink_command
             WHERE (guild_id=%s AND yoink_type=%s AND channel_id=%s);''')
         cursor.execute(sql, (ctx.guild.id, "delete", ctx.channel.id))
         results = cursor.fetchone()
         if results is None:
             await ctx.send(embed=discord.Embed(
                 title="No one deleted any messages!"))
             return
         else:
             author = str(self.bot.get_user(results[2]))[:-5]
             embed = discord.Embed(color=discord.Color.orange())
             embed.add_field(
                 name="Imagine trying to delete a message :clown:",
                 value=(f"**{author}:** `{results[4]}`"))
             await ctx.send(embed=embed)
     except Exception as e:
         print(e)
     conn.close()  #Closes connection to db
Exemple #21
0
    async def rolerequest(self, ctx, name, color=None):
        cursor,conn=dbconnect() #Opens connection to db
        #Makes sure that user isn't submitting multiple requests for the same thing
        try:
            sql=('''SELECT * FROM role_requests WHERE (server_id=%s AND user_id=%s AND role_name=%s)''')
            cursor.execute(sql,(ctx.guild.id,ctx.message.author.id,name))
        except Exception as e:
            print (e)
        results=len(cursor.fetchall())
        if results>0:
            await ctx.send(embed=discord.Embed(title="You cannot submit multiple requests for the same role :/",color=discord.Color.orange()))
            return

        #Creates request in db
        sql=('''INSERT INTO role_requests(server_id, user_id, role_name, color)
            VALUES (%s, %s, %s, %s)''')
        if color is None: #Makes color value default to clear
            color="ffffff"
        cursor.execute(sql,(ctx.guild.id,ctx.message.author.id, name, color))
        conn.commit()
        await ctx.send(embed=discord.Embed(title="Request submitted! :slight_smile:",color=discord.Color.green()))
        conn.close() #Closes connection to db
Exemple #22
0
 async def warn(self, ctx, user: discord.Member, *, reason=None):     
     cursor,conn=dbconnect() #Opens connection to db
     exceptions=[805830355290161153]#Smth
     if (ctx.author.top_role.position <= user.top_role.position) and (ctx.guild.owner.id != ctx.author.id) and (user.top_role.id not in exceptions):
         await ctx.send(embed=discord.Embed(title="You are trying to warn someone who has a role higher or equal to yours! Smh my head"))
     else:
         embed=discord.Embed(color=discord.Color.red())
         if reason:
             await user.send(embed=discord.Embed(title=f"You have been warned in **{ctx.guild}** for **{reason}**"))
             embed.add_field(name="Warning", value=(f"**User **{user.mention} has been warned by {ctx.author.mention} for **{reason}**"))
         else:
             await user.send(embed=discord.Embed(title=f"You have been warned in **{ctx.guild}**"))
             embed.add_field(name="Warning", value=(f"**User **{user.mention} has been warned by {ctx.author.mention}"))
         try:
             sql=('''INSERT INTO moderator_history(guild_id, type, user_id, username, reason)
                 VALUES (%s, %s, %s, %s, %s)''')
             cursor.execute(sql, (ctx.guild.id, "warn", user.id, str(user), reason))
             conn.commit()
             await ctx.send(embed=embed)
         except Exception as e:
             print (e)
     conn.close() #Closes connection to db
Exemple #23
0
async def on_guild_join(guild):
    cursor, conn = dbconnect()  #Opens connection to db

    sql = ("SELECT guild_id, reason FROM banned_entities WHERE guild_id=%s;")
    cursor.execute(sql, (guild.id, ))
    result = cursor.fetchone()

    conn.close()  #Closes connection to db
    sysChannel = guild.system_channel
    if result is None:
        await sysChannel.send(embed=discord.Embed(
            title=
            "Sup nerds... type *.s help* to learn some stuff about me... if you dare :expressionless:"
        ))
    elif result[0] == guild.id:
        await sysChannel.send(embed=discord.Embed(
            title=
            f"This server was blacklisted from the bot! Reason: {result[1]}. Contact PureCache#0001 for an appeal"
        ))
        guild = bot.get_guild(guild.id)
        await guild.leave()
        return
Exemple #24
0
 async def yoinkedit(self, ctx):
     cursor, conn = dbconnect()  #Opens connection to db
     try:
         sql = ('''SELECT * FROM yoink_command
             WHERE (guild_id=%s AND yoink_type=%s AND channel_id=%s);''')
         cursor.execute(sql, (ctx.guild.id, "edit", ctx.channel.id))
         results = cursor.fetchone()
         if results is None:
             await ctx.send(embed=discord.Embed(
                 title="No one edited any messages!"))
             return
         else:
             message = results[4]
             author = str(self.bot.get_user(results[2]))[:-5]
             embed = discord.Embed(
                 title=f"{author}'s Absolute :clown: Moment",
                 color=discord.Color.orange())
             embed.add_field(name="Mans really tried to change",
                             value=f"`{message}`")
             await ctx.send(embed=embed)
     except Exception as e:
         print(e)
     conn.close()  #Closes connection to db
Exemple #25
0
    async def exportreqs(self, ctx):
        cursor,conn=dbconnect() #Opens connection to db
        sql=("SELECT row_id, user_id, role_name, color FROM role_requests WHERE server_id=%s;")
        cursor.execute(sql, (ctx.guild.id,))
        conn.commit()
        results=cursor.fetchall()
        if results is None: #No requests for the server
            await ctx.send(embed=discord.Embed(title="No requests were found for this server!",color=discord.Color.red()))
            return
        
        embed=discord.Embed(title="Role Request List",color=discord.Color.greyple())
        count=0
        for item in results:
            embed.add_field(name="ID",value=results[count][0])
            embed.add_field(name="User",value=(f"<@{results[count][1]}>"))
            embed.add_field(name="Role",value=results[count][2])
            embed.add_field(name="Color",value=results[count][3], inline=False)
            count+=1

        await ctx.send(embed=discord.Embed(title="Role Requests dmed to you!",color=discord.Color.green()))
        channel=await ctx.author.create_dm()
        await channel.send(embed=embed) #Sends dm with requests
        conn.close() #Closes connection to db
Exemple #26
0
    async def blacklist(self, ctx, id: int, type, reason=None):
        if type.lower() != "guild" and type.lower() != "user":
            await ctx.send(embed=discord.Embed(
                "Parameter 'Type' must be either 'guild' or 'user'"))
            return

        cursor, conn = dbconnect()  #Opens connection to db
        try:
            sql = (
                "SELECT row_id FROM banned_entities WHERE (guild_id=%s OR user_id=%s);"
            )
            cursor.execute(sql, (id, id))
            if cursor.fetchone() is not None:  #Already blacklisted
                await ctx.send(embed=discord.Embed(
                    title="User or guild is already blacklisted",
                    color=discord.Color.red()))
                return
        except Exception as e:
            await ctx.send(f"Error: {e}")

        try:
            if type.lower() == "guild":
                sql = (
                    '''INSERT INTO banned_entities(guild_id, reason, ban_date)
                    VALUES (%s, %s, %s);''')
            else:
                sql = (
                    '''INSERT INTO banned_entities(user_id, reason, ban_date)
                    VALUES (%s, %s, %s);''')
            cursor.execute(sql, (id, reason, datetime.datetime.now()))
            conn.commit()
            await ctx.send(embed=discord.Embed(
                title="User or guild successfully blacklisted",
                color=discord.Color.green()))
        except Exception as e:
            await ctx.send(f"Error: {e}")
        conn.close()  #Closes connection to db
Exemple #27
0
    async def welcomepicture(self, ctx, picture):
        cursor, conn = dbconnect()  #Opens connection to db
        if picture == "default":
            sql = (
                "SELECT * FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
            )
            cursor.execute(sql, (ctx.guild.id, "welcome_picture"))
            if cursor.fetchone() is not None:
                sql = ('''UPDATE guild_settings
                    SET setting_value=%s
                    WHERE (guild_id=%s AND setting=%s)''')
                cursor.execute(sql, (
                    "https://media.tenor.co/images/3ccff8c4b2443d93811eac9b2fd56f11/raw",
                    ctx.guild.id, "welcome_picture"))
                conn.commit()
            else:
                sql = (
                    '''INSERT INTO guild_settings(guild_id, setting, setting_value)
                    VALUES (%s, %s, %s)''')
                cursor.execute(sql, (
                    ctx.guild.id, "welcome_picture",
                    "https://media.tenor.co/images/3ccff8c4b2443d93811eac9b2fd56f11/raw"
                ))
                conn.commit()
            await ctx.send(embed=discord.Embed(
                title="Picture reset to default image"))
            return

        embed = discord.Embed(
            title=
            "Test Image: Is this the correct image? React with the proper emoji"
        )
        embed.set_image(url=picture)
        msg = await ctx.send(embed=embed)

        def check(reaction, user):
            return user != self.bot.user and user == ctx.author and (str(
                reaction.emoji) in reactEmojis)

        reactEmojis = ["✔️", "❌"]
        for emoji in reactEmojis:
            await msg.add_reaction(emoji)

        response, _ = await self.bot.wait_for("reaction_add",
                                              check=check,
                                              timeout=30)
        if response.emoji == "✔️":
            sql = (
                "SELECT * FROM guild_settings WHERE (guild_id=%s AND setting=%s)"
            )
            cursor.execute(sql, (ctx.guild.id, "welcome_picture"))
            if cursor.fetchone() is not None:
                sql = ('''UPDATE guild_settings
                    SET setting_value=%s
                    WHERE (guild_id=%s AND setting=%s)''')
                cursor.execute(sql, (picture, ctx.guild.id, "welcome_picture"))
            else:
                sql = (
                    '''INSERT INTO guild_settings(guild_id, setting, setting_value)
                    VALUES (%s, %s, %s)''')
                cursor.execute(sql, (ctx.guild.id, "welcome_picture", picture))
            conn.commit()
            await ctx.send(embed=discord.Embed(
                title="Welcome picture set! :slight_smile:"))
        else:
            await ctx.send(embed=discord.Embed(
                title="Restart the command and try to paste a different link!")
                           )
        conn.close()  #Closes connection to db
Exemple #28
0
    async def mute(self,ctx, user: discord.Member, time: str, *, reason):    
        cursor,conn=dbconnect() #Opens connection to db        
        exceptions=[805830355290161153]#Smth
        if (ctx.author.top_role.position <= user.top_role.position) and (ctx.guild.owner.id != ctx.author.id) and (user.top_role.id not in exceptions):
            await ctx.send(embed=discord.Embed(title="You are trying to mute someone who has a role higher or equal to yours! Smh my head",color=discord.Color.red()))
            return
        else:
            guild=ctx.guild
            muteRole=None

            for role in guild.roles: #Checks to see if Muted role exists
                if role.name.lower()=="muted":
                    muteRole=role
                    break
            if muteRole in user.roles: #If user is already muted
                await ctx.send(embed=discord.Embed(title="Lmao they're already muted"))
            else:
                if not muteRole: #If muted role doesn't exist, creates one
                    await ctx.send(embed=discord.Embed(title="This server doesn't have the `Muted` role set up, lemme do it for you right now\nThis might take a little, please be patient"))
                    
                    perms=discord.Permissions(send_messages=False)
                    muteRole=await guild.create_role(name="Muted",color=discord.Color.dark_grey(),permissions=perms)
                    for channel in guild.channels:
                        await channel.set_permissions(muteRole,send_messages=False)
                sql=('''INSERT INTO moderator_history(guild_id, type, user_id, username, duration, reason)
                    VALUES (%s, %s, %s, %s, %s, %s)''')
                cursor.execute(sql, (ctx.guild.id, "mute", user.id, str(user), time, reason))
                conn.commit()
                if time=="perm": #Permamuted
                    await user.add_roles(muteRole)
                    embed=discord.Embed()
                    embed.add_field(name="You guys wanna see a joke?",value=f"{user.mention} getting muted for **{reason}**")
                    await ctx.send(embed=embed)
                
                else: #User specified time limit
                    timeUnit=None
                    parsedTime=None
                    if "s" in time:
                        timeUnit="seconds"
                        parsedTime=time[0:(len(time)-1)]
                    elif "m" in time:
                        timeUnit="minute(s)"
                        parsedTime=time[0:(len(time)-1)]
                    elif "h" in time:
                        timeUnit="hour(s)"
                        parsedTime=time[0:(len(time)-1)]
                    else: #Defaults to minutes if user doesn't provide time unit
                        timeUnit="minute(s)"
                        parsedTime=time[0:(len(time)-1)]

                    await user.add_roles(muteRole)
                    embed=discord.Embed()
                    
                    embed.add_field(name="You guys wanna see a joke?",value=f"{user.mention} getting silenced for {parsedTime} {timeUnit} for **{reason}**, what an L")
                    
                    await ctx.send(embed=embed)

                    if timeUnit == "seconds":
                        await asyncio.sleep(int(parsedTime))
                    elif timeUnit == "minute(s)":
                        await asyncio.sleep(int(parsedTime) * 60)
                    elif timeUnit == "hour(s)":
                        await asyncio.sleep(int(parsedTime) * 3600)
                    
                    if muteRole in user.roles:
                        await user.remove_roles(muteRole)
                        await ctx.send(embed=discord.Embed(title=f"{user} has been unmuted after {parsedTime} {timeUnit}!",color=discord.Color.red()))
            conn.close() #Closes connection to db