edit again, because I forgot to pull
crispy-caesus 114518720+crispy-caesus@users.noreply.github
Sat, 24 Aug 2024 18:01:27 +0200
M
bot.py
→
bot.py
@@ -68,7 +68,7 @@ async def test(ctx):
await ctx.guild.create_role(name = "hi", color=int("0x"+("#5460D9"[1:]), 16)+0x200, mentionable = False) await ctx.respond("hi") -# ======================== add club ================================ # +# ======================== ADD CLUB ================================ # @bot.slash_command(description="Erstellt einen Booster Club") async def club_hinzuftügen(ctx, kanalname, emoji, rollenname, rollenfarbe):@@ -90,8 +90,13 @@ if response != None:
await ctx.respond(response) await ctx.respond("✅ Club erstellt!") +# ==================== EDIT CLUBS ====================== # +@bot.slash_command(description="Ändert den Channel Name des Clubs") +async def club_channel_name_aendern(ctx, neuer_name): + await ctx.respond(await logic.club_change_channel_name(ctx.guild.id, ctx.author.id, neuer_name)) +# ========================= dsfsf ======================= # @bot.slash_command(description="Fügt Member zu eigenem Club hinzu") async def mitglied_hinzufuegen(ctx, member): db = database.Database(f"{ctx.guild.id}.db")
M
db.py
→
db.py
@@ -13,7 +13,7 @@ async with aiosqlite.connect(self.db_name) as db:
await db.execute("""CREATE TABLE IF NOT EXISTS clubs ( id INTEGER PRIMARY KEY, channel_name TEXT NOT NULL UNIQUE, - owner INTEGER NOT NULL UNIQUE, + owner_id INTEGER NOT NULL UNIQUE, role_id INTEGER NOT NULL UNIQUE, role_name TEXT NOT NULL UNIQUE);""") await db.commit()@@ -56,7 +56,7 @@ print(e)
return("Error") return(None) -# =========================== create club =========================== # +# =========================== CREATE CLUB =========================== # async def get_booster_role_id(self): async with aiosqlite.connect(self.db_name) as db:@@ -65,27 +65,30 @@ return((await cursor.fetchone())[0])
async def select_club_by_owner(self, owner_id): async with aiosqlite.connect(self.db_name) as db: - async with db.execute("SELECT * FROM clubs WHERE owner = ?;", (owner_id,)) as cursor: - async for row in cursor: - return row[0] + try: + async with db.execute("SELECT * FROM clubs WHERE owner_id = ?;", (owner_id,)) as cursor: + return(await cursor.fetchone()) + except Error as e: + print(e) + return("❌ Error! Du besitzt keinen Club") async def select_club_by_channel_name(self, channel_name): async with aiosqlite.connect(self.db_name) as db: async with db.execute("SELECT * FROM clubs WHERE channel_name = ?;", (channel_name,)) as cursor: async for row in cursor: - return row[0] + return row async def select_club_by_role_name(self, role_name): async with aiosqlite.connect(self.db_name) as db: async with db.execute("SELECT * FROM clubs WHERE role_name = ?;", (role_name,)) as cursor: async for row in cursor: - return row[0] + return row async def create_club(self, channel_name: str, owner: int, role_id: int, role_name: str): print(f"DB: received:\n channel_name: {channel_name}\n owner: {owner}\n role_id: {role_id}") args = (channel_name, owner, role_id, role_name) - sql = """INSERT INTO clubs (channel_name,owner,role_id,role_name) + sql = """INSERT INTO clubs (channel_name,owner_id,role_id,role_name) VALUES(?,?,?,?);""" try: async with aiosqlite.connect(self.db_name) as db:@@ -93,7 +96,19 @@ await db.execute(sql, args)
await db.commit() except Error as e: print(e) - return("Error!") + return("❌ Error!") + +# ============================ EDIT CLUB ========================== # + + async def club_edit(self, owner_id: int, column, value): + async with aiosqlite.connect(self.db_name) as db: + try: + await db.execute(f"UPDATE clubs SET {column} = ? WHERE owner_id = ?;", (value, owner_id)) + await db.commit() + return(None) + except Error as e: + print(e) + return("❌ Error!") # ============================ add member ================================== #@@ -103,18 +118,18 @@ sql = """INSERT INTO members (user_id, club_id)
VALUES(?,?);""" try: async with aiosqlite.connect(self.db_name) as db: - async with db.execute("SELECT id FROM clubs WHERE owner = ?;", (owner, )) as cursor: + async with db.execute("SELECT id FROM clubs WHERE owner_id = ?;", (owner, )) as cursor: async for row in cursor: args = (member, row[0]) await db.execute(sql, args) await db.commit() except Error as e: print(e) - return("Error") + return("❌ Error!") async def select_role_id_by_owner(self, member: int): async with aiosqlite.connect(self.db_name) as db: - async with db.execute("SELECT role_id FROM clubs WHERE owner = ?;", (member,)) as cursor: + async with db.execute("SELECT role_id FROM clubs WHERE owner_id = ?;", (member,)) as cursor: async for row in cursor: return(row[0])
M
logic.py
→
logic.py
@@ -1,4 +1,5 @@
import db as database +import emoji as emojis # ========================= INITIALIZATION ========================= #@@ -71,31 +72,55 @@
case 2: # check for ability to create given club existing_club_of_owner = await db.select_club_by_owner(owner_id) if existing_club_of_owner != None: - return("Error! Du hast bereits einen Club") - + return("❌ Error! Du hast bereits einen Club") + +# ---------------------- emoji checks ------------------------- # + + if len(emoji) != 1: + return("❌ Error! Das Emoji-Feld darf nicht länger oder kürzer als 1 sein") + if emojis.is_emoji(emoji) != True: + return(" Error! Das Emoji-Feld muss mit einem Emoji gefüllt werden") + +# ---------------------- channel name checks ------------------------- # + if emojis.emoji_count(channel_name_without_emoji) > 0: + return("❌ Error! Der Kanalname darf keine Emojis enthalten") + + combined_channel_name = f"「{emoji}」{channel_name_without_emoji}" existing_club = await db.select_club_by_channel_name(combined_channel_name) if existing_club != None: - return("Error! Es gibt bereits einen Club mit diesem Kanalnamen") + return("❌ Error! Es gibt bereits einen Club mit diesem Kanalnamen") existing_club_role = await db.select_club_by_role_name(role_name) if existing_club_role != None: - return("Error! Es existiert bereits ein Club mit diesem Rollennamen") + return("❌ Error! Es existiert bereits ein Club mit diesem Rollennamen") - # create club on discord if color[0] == '#': color = color[1:] try: color = int("0x"+color, 16)+0x200 except: - return("Error! Farbformat falsch angegeben") + return("❌ Error! Farbformat falsch angegeben") return(role_name, color) case 3: return(await db.create_club(f"「{emoji}」{channel_name_without_emoji}", owner_id, int(color), role_name)) - +# ==================================== EDIT CLUB ============================= # + +async def club_change_channel_name(guild_id: int, owner_id: int, new_channel_name: str): + db = database.Database(f"{guild_id}.db") + response = await db.select_club_by_owner(owner_id) + if response[:8] == "❌ Error!": + return(response) + else: + old_channel_name = response[1] + error = await db.club_edit(owner_id, "channel_name", new_channel_name) + if error != None: + return(error) + else: + return(f"✅ Club Name von `{old_channel_name}` auf `{new_channel_name}` geändert") # role id needed