Publish project to Git
This commit is contained in:
commit
5ff2dd9c50
10 changed files with 888 additions and 0 deletions
87
cogs/management.py
Normal file
87
cogs/management.py
Normal file
|
@ -0,0 +1,87 @@
|
|||
import discord
|
||||
import sqlite3
|
||||
from discord.ext import commands
|
||||
|
||||
DBFILENAME = "bot.db"
|
||||
|
||||
class Management(commands.Cog):
|
||||
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
#Commands
|
||||
@commands.command(aliases=["purge", "clear"], brief="Cleans messages from channel", description="Clears either 1 or a user set amount of messages from the channel the command was called within.")
|
||||
@commands.has_permissions(manage_messages=True)
|
||||
async def clean(self, ctx, *, amount=1):
|
||||
await ctx.channel.purge(limit=int(amount) + 1)
|
||||
|
||||
@commands.command(brief="Kicks user", description="Removes a specified user from the server. They can re-join if they have an invite link.")
|
||||
@commands.has_permissions(kick_members=True)#@commands.has_any_role("Owner", "Moderator")
|
||||
async def kick(self, ctx, member : discord.Member, *, reason=None):
|
||||
await member.kick(reason=reason)
|
||||
|
||||
@commands.command(brief="Ban user", description="Removes a specified user from the server. They will be unable to re-join until they have been unbanned.")
|
||||
@commands.has_permissions(ban_members=True)
|
||||
async def ban(self, ctx, member : discord.Member, *, reason=None):
|
||||
await member.ban(reason=reason)
|
||||
|
||||
@commands.command(brief="Unban user", description="Removes a specified user from the servers list of banned users. Allowing them to re-join the server with an invite link.")
|
||||
@commands.has_permissions(ban_members=True)
|
||||
async def unban(self, ctx, *, member):
|
||||
banned_users = await ctx.guild.bans()
|
||||
member_name, member_discriminator = member.split("#")
|
||||
for ban_entry in banned_users:
|
||||
user = ban_entry.user
|
||||
if (user.name, user.discriminator) == (member_name, member_discriminator):
|
||||
await ctx.guild.unban(user)
|
||||
|
||||
@commands.command(aliases=["a"], brief="Echo messsage", description="The bot will echo the text following the command also deleting the message used to call the commmand.")
|
||||
@commands.has_permissions(manage_messages = True)
|
||||
async def announcement(self, ctx, *, message=""):
|
||||
await ctx.message.channel.purge(limit=1)
|
||||
await ctx.send(f"{message}")
|
||||
|
||||
@commands.command(brief="Warn user", description="Sends a warning message with reasoning to the specified user.")
|
||||
@commands.has_permissions(manage_messages = True)
|
||||
async def warn(self, ctx, member : discord.Member, *, reason=None):
|
||||
await ctx.message.channel.purge(limit=1)
|
||||
#await member.send(f"**WARNING** from {ctx.message.author.mention}:\n{reason}")
|
||||
embed = discord.Embed(title=f"**WARNING** from", description=f"{ctx.message.author.mention}")
|
||||
embed.add_field(name="Reason:", value=(f"{reason}"))
|
||||
embed.colour = (0xff0000)
|
||||
await member.send(content=None, embed=embed)
|
||||
|
||||
@commands.command(brief="User messages", description="Check specified users profanity rating.")
|
||||
@commands.has_permissions(manage_messages=True)
|
||||
async def messages(self, ctx, member: discord.Member):
|
||||
db = sqlite3.connect(DBFILENAME)#Open the database
|
||||
cursor = db.cursor()
|
||||
cursor.execute("SELECT total FROM users WHERE user=?", (member.id,))#Select mentioned user to see if the value exists
|
||||
totalResult = cursor.fetchone()
|
||||
totalResult = int(totalResult[0])
|
||||
cursor.execute("SELECT profanity FROM users WHERE user=?", (member.id,))#Select mentioned user to see if the value exists
|
||||
profanityResult = cursor.fetchone()
|
||||
profanityResult = int(profanityResult[0])
|
||||
profanityPercent = round((profanityResult / totalResult * 100), 2)
|
||||
cursor.execute("SELECT message FROM messages WHERE bool=? AND user=?", (1, member.id))
|
||||
messageResult = cursor.fetchall()
|
||||
db.close()
|
||||
if not messageResult: #if messageResult is empty
|
||||
allMessages = "No messages to show"
|
||||
else:
|
||||
messageResult = messageResult[-5:]#Only select the last 5 messages which contained profanity
|
||||
allMessages = ""
|
||||
for i in range(0, len(messageResult)):
|
||||
allMessages += str(messageResult[i])
|
||||
allMessages = allMessages.replace("(", "")
|
||||
allMessages = allMessages.replace(")", "")
|
||||
allMessages = allMessages.replace(",", " ")
|
||||
embed = discord.Embed(title="Messages", description="")
|
||||
embed.add_field(name="Total", value=f"{totalResult}")
|
||||
embed.add_field(name="Profanity", value=f"{profanityResult}")
|
||||
embed.add_field(name="Profanity %", value=f"{profanityPercent}")
|
||||
embed.add_field(name="Recent rude messages", value=f"{allMessages}")
|
||||
await ctx.send(content=None, embed=embed)
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Management(bot))
|
Loading…
Add table
Add a link
Reference in a new issue