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
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
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
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
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
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
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)
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}"))
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}"))
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)
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}"))
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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