implemented #16 and some other things
This commit is contained in:
parent
d153a5f1bd
commit
8e041bb204
3 changed files with 59 additions and 12 deletions
|
@ -33,6 +33,15 @@ class Info(commands.Cog):
|
||||||
class CustomError(Exception):
|
class CustomError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@commands.command()
|
||||||
|
async def avatar(self, ctx: commands.Context, target: commands.UserConverter):
|
||||||
|
"""This command retrieves a user's avatar. - NOTE: Move to cog"""
|
||||||
|
if not isinstance(target, revolt.User):
|
||||||
|
await ctx.message.reply("Please provide a user argument!")
|
||||||
|
return
|
||||||
|
avatar = target.avatar.url
|
||||||
|
await ctx.message.reply(f"{avatar}")
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
async def channelinfo(self, ctx: commands.Context, channel: commands.ChannelConverter):
|
async def channelinfo(self, ctx: commands.Context, channel: commands.ChannelConverter):
|
||||||
"""Displays information about a channel."""
|
"""Displays information about a channel."""
|
||||||
|
|
|
@ -28,8 +28,42 @@ class Moderation(commands.Cog):
|
||||||
connection = mysql.connector.connect(host=db_host,user=db_user,password=db_password,database=db)
|
connection = mysql.connector.connect(host=db_host,user=db_user,password=db_password,database=db)
|
||||||
return connection
|
return connection
|
||||||
|
|
||||||
|
def create_server_table(self, server_id):
|
||||||
|
database = Moderation.mysql_connect(self)
|
||||||
|
cursor = database.cursor()
|
||||||
|
try:
|
||||||
|
cursor.execute(f"SELECT * FROM `{server_id.lower()}_moderation`")
|
||||||
|
except mysql.connector.errors.ProgrammingError:
|
||||||
|
query = f"""
|
||||||
|
CREATE TABLE `{server_id.lower()}_moderation` (
|
||||||
|
moderation_id INT UNIQUE PRIMARY KEY NOT NULL,
|
||||||
|
timestamp INT NOT NULL,
|
||||||
|
moderation_type LONGTEXT NOT NULL,
|
||||||
|
target_id LONGTEXT NOT NULL,
|
||||||
|
moderator_id LONGTEXT NOT NULL,
|
||||||
|
duration LONGTEXT,
|
||||||
|
end_timestamp INT,
|
||||||
|
reason LONGTEXT,
|
||||||
|
resolved BOOL NOT NULL,
|
||||||
|
resolve_reason LONGTEXT
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
cursor.execute(query)
|
||||||
|
insert_query = f"""
|
||||||
|
INSERT INTO `{server_id.lower()}_moderation`
|
||||||
|
(moderation_id, timestamp, moderation_type, target_id, moderator_id, duration, end_timestamp, reason, resolved, resolve_reason)
|
||||||
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||||
|
"""
|
||||||
|
insert_values = (0, 0, "NULL", 0, 0, "NULL", 0, "NULL", 0, "NULL")
|
||||||
|
cursor.execute(insert_query, insert_values)
|
||||||
|
database.commit()
|
||||||
|
database.close()
|
||||||
|
print(f"MySQL Table Created!\n{server_id.lower()}_moderation")
|
||||||
|
else:
|
||||||
|
database.close()
|
||||||
|
return
|
||||||
|
|
||||||
def mysql_log(self, ctx: commands.Context, moderation_type, target_id, duration, reason):
|
def mysql_log(self, ctx: commands.Context, moderation_type, target_id, duration, reason):
|
||||||
moderator_id = ctx.author.id
|
|
||||||
timestamp = int(time.time())
|
timestamp = int(time.time())
|
||||||
if duration != "NULL":
|
if duration != "NULL":
|
||||||
end_timedelta = datetime.fromtimestamp(timestamp) + duration
|
end_timedelta = datetime.fromtimestamp(timestamp) + duration
|
||||||
|
@ -41,11 +75,20 @@ class Moderation(commands.Cog):
|
||||||
cursor.execute(f"SELECT moderation_id FROM `{ctx.server.id.lower()}_moderation` ORDER BY moderation_id DESC LIMIT 1")
|
cursor.execute(f"SELECT moderation_id FROM `{ctx.server.id.lower()}_moderation` ORDER BY moderation_id DESC LIMIT 1")
|
||||||
moderation_id = cursor.fetchone()[0] + 1
|
moderation_id = cursor.fetchone()[0] + 1
|
||||||
sql = f"INSERT INTO `{ctx.server.id.lower()}_moderation` (moderation_id, timestamp, moderation_type, target_id, moderator_id, duration, end_timestamp, reason, resolved, resolve_reason) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
sql = f"INSERT INTO `{ctx.server.id.lower()}_moderation` (moderation_id, timestamp, moderation_type, target_id, moderator_id, duration, end_timestamp, reason, resolved, resolve_reason) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||||
val = (moderation_id, timestamp, moderation_type, target_id, moderator_id, duration, end_timestamp, f"{reason}", 0, "NULL")
|
val = (moderation_id, timestamp, moderation_type, target_id, ctx.author.id, duration, end_timestamp, f"{reason}", 0, "NULL")
|
||||||
cursor.execute(sql, val)
|
cursor.execute(sql, val)
|
||||||
database.commit()
|
database.commit()
|
||||||
database.close()
|
database.close()
|
||||||
print(f"MySQL Row Inserted!\n{moderation_id}, {timestamp}, {moderation_type}, {target_id}, {moderator_id}, {duration}, {end_timestamp} {reason}, 0, NULL")
|
print(f"MySQL Row Inserted!\n{moderation_id}, {timestamp}, {moderation_type}, {target_id}, {ctx.author.id}, {duration}, {end_timestamp} {reason}, 0, NULL")
|
||||||
|
|
||||||
|
@commands.command()
|
||||||
|
async def dbcreate(self, ctx: commands.Context):
|
||||||
|
required_role = utils.get(ctx.server.roles, id=required_role_id)
|
||||||
|
if required_role not in ctx.author.roles:
|
||||||
|
await ctx.message.reply("You do not have permission to use this command!")
|
||||||
|
return
|
||||||
|
self.create_server_table(server_id=ctx.server.id)
|
||||||
|
await ctx.message.reply("MySQL Table Created!")
|
||||||
|
|
||||||
@commands.command(name="timeout", aliases=["mute"])
|
@commands.command(name="timeout", aliases=["mute"])
|
||||||
async def timeout(self, ctx: commands.Context, target: commands.MemberConverter, duration: str, *, reason: str):
|
async def timeout(self, ctx: commands.Context, target: commands.MemberConverter, duration: str, *, reason: str):
|
||||||
|
|
13
main.py
13
main.py
|
@ -26,6 +26,10 @@ class Client(commands.CommandsClient):
|
||||||
return prefix
|
return prefix
|
||||||
return input
|
return input
|
||||||
|
|
||||||
|
async def on_server_join(self, server: revolt.Server):
|
||||||
|
print(f"Joined server: {server.name} ({server.id})")
|
||||||
|
Moderation.create_server_table(self, server.id)
|
||||||
|
|
||||||
async def on_message_delete(self, message: revolt.Message):
|
async def on_message_delete(self, message: revolt.Message):
|
||||||
if isinstance(message.author, revolt.Member):
|
if isinstance(message.author, revolt.Member):
|
||||||
if message.author.bot is True:
|
if message.author.bot is True:
|
||||||
|
@ -74,15 +78,6 @@ class Client(commands.CommandsClient):
|
||||||
await msg.edit(content=" ", embeds=embeds)
|
await msg.edit(content=" ", embeds=embeds)
|
||||||
print(f'Ping {int(ping)}ms')
|
print(f'Ping {int(ping)}ms')
|
||||||
|
|
||||||
@commands.command()
|
|
||||||
async def avatar(self, ctx: commands.Context, target: commands.UserConverter):
|
|
||||||
"""This command retrieves a user's avatar. - NOTE: Move to cog"""
|
|
||||||
if not isinstance(target, revolt.User):
|
|
||||||
await ctx.message.reply("Please provide a user argument!")
|
|
||||||
return
|
|
||||||
avatar = target.avatar.url
|
|
||||||
await ctx.message.reply(f"{avatar}")
|
|
||||||
|
|
||||||
async def prefix_change(self, message: revolt.Message, new_prefix: str, silent: bool | None = False):
|
async def prefix_change(self, message: revolt.Message, new_prefix: str, silent: bool | None = False):
|
||||||
dotenv.set_key(env, 'PREFIX', new_prefix)
|
dotenv.set_key(env, 'PREFIX', new_prefix)
|
||||||
if silent is not True:
|
if silent is not True:
|
||||||
|
|
Loading…
Reference in a new issue