Implemented Yes Message
This commit is contained in:
84
main.py
84
main.py
@@ -27,11 +27,7 @@ def connect_db():
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def recruit_update(member, recruit, cur, conn):
|
def recruit_update(member, recruit, cur, conn):
|
||||||
if member.nick is None:
|
cur.execute("INSERT INTO recruits (discord_id, nickname, recruit) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE nickname=?, recruit=?;", (member.id, member.display_name, recruit, member.display_name, recruit))
|
||||||
nick = member.name
|
|
||||||
else:
|
|
||||||
nick = member.nick
|
|
||||||
cur.execute("INSERT INTO recruits (discord_id, nickname, recruit) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE nickname=?, recruit=?;", (member.id, nick, recruit, nick, recruit))
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
@@ -48,21 +44,67 @@ cur = conn.cursor()
|
|||||||
|
|
||||||
# create Slash Command group with bot.create_group
|
# create Slash Command group with bot.create_group
|
||||||
settings = bot.create_group("set", "Einstellungen")
|
settings = bot.create_group("set", "Einstellungen")
|
||||||
@settings.command()
|
|
||||||
@discord.commands.default_permissions(manage_roles=True)
|
def get_count_recruits():
|
||||||
async def channel_voting(ctx):
|
cur.execute("SELECT count(*) FROM recruits WHERE recruit=1")
|
||||||
|
count = cur.fetchone()[0]
|
||||||
|
return count
|
||||||
|
|
||||||
|
def build_option_list():
|
||||||
|
cur.execute("SELECT discord_id, nickname, recruit FROM recruits WHERE recruit=1")
|
||||||
|
options = []
|
||||||
|
records = cur.fetchall()
|
||||||
|
for row in records:
|
||||||
|
options.append(discord.SelectOption(value=str(row[0]), label=str(row[1])))
|
||||||
|
return options
|
||||||
|
|
||||||
|
|
||||||
|
class Yes_select(discord.ui.View):
|
||||||
|
@discord.ui.select( # the decorator that lets you specify the properties of the select menu
|
||||||
|
placeholder = "Choose a Flavor!", # the placeholder text that will be displayed if nothing is selected
|
||||||
|
min_values = 1, # the minimum number of values that must be selected by the users
|
||||||
|
max_values = get_count_recruits(), # the maximum number of values that can be selected by the users
|
||||||
|
options = build_option_list()
|
||||||
|
)
|
||||||
|
async def select_callback(self, select, interaction): # the function called when the user is done selecting options
|
||||||
|
await interaction.response.send_message(f"Awesome! I like {select.values[0]} too!")
|
||||||
|
|
||||||
|
def create_yes_embed():
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Rekrutenbesichtigung: Ja-Stimme",
|
||||||
|
description="Geb hier deine Ja-Stimme für einen Rekruten ab!",
|
||||||
|
color=discord.Colour.green(),
|
||||||
|
)
|
||||||
|
return embed
|
||||||
|
|
||||||
|
|
||||||
|
async def send_yes_message(channel):
|
||||||
|
message = await channel.send(embed=create_yes_embed(), view=Yes_select())
|
||||||
|
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'message_voting_yes'", (message.id, ))
|
||||||
|
|
||||||
|
async def edit_yes_message():
|
||||||
|
cur.execute("SELECT value FROM settings WHERE name='channel_voting'")
|
||||||
|
channel = bot.get_channel(int(cur.fetchone()[0]))
|
||||||
|
cur.execute("SELECT value FROM settings WHERE name='message_voting_yes'")
|
||||||
|
message = await channel.fetch_message(int(cur.fetchone()[0]))
|
||||||
|
await message.edit(embed=create_yes_embed(), view=Yes_select())
|
||||||
|
|
||||||
|
@settings.command(description="Sendet die Nachricht zum Abstimmen in den aktuellen Channel.")
|
||||||
|
@default_permissions(manage_roles=True)
|
||||||
|
async def message_voting(ctx):
|
||||||
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'channel_voting'", (ctx.channel_id, ))
|
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'channel_voting'", (ctx.channel_id, ))
|
||||||
|
await send_yes_message(ctx.channel)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
await ctx.respond(f"Done.", ephemeral=True)
|
await ctx.respond(f"Done.", ephemeral=True)
|
||||||
|
|
||||||
@settings.command()
|
@settings.command(description="Sendet den Report in den aktuellen Kanal.")
|
||||||
@default_permissions(manage_roles=True)
|
@default_permissions(manage_roles=True)
|
||||||
async def channel_report(ctx):
|
async def message_report(ctx):
|
||||||
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'channel_report'", (ctx.channel_id, ))
|
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'channel_report'", (ctx.channel_id, ))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
await ctx.respond(f"Done.", ephemeral=True)
|
await ctx.respond(f"Done.", ephemeral=True)
|
||||||
|
|
||||||
@settings.command()
|
@settings.command(description="Setzt die ID der Rekruten-Rolle")
|
||||||
@default_permissions(manage_roles=True)
|
@default_permissions(manage_roles=True)
|
||||||
async def role_recruit(
|
async def role_recruit(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -72,7 +114,7 @@ async def role_recruit(
|
|||||||
conn.commit()
|
conn.commit()
|
||||||
await ctx.respond(f"Done.", ephemeral=True)
|
await ctx.respond(f"Done.", ephemeral=True)
|
||||||
|
|
||||||
@settings.command()
|
@settings.command(description="Setzt den Discord-Server")
|
||||||
@default_permissions(manage_roles=True)
|
@default_permissions(manage_roles=True)
|
||||||
async def guild(ctx):
|
async def guild(ctx):
|
||||||
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'guild'", (ctx.guild_id, ))
|
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'guild'", (ctx.guild_id, ))
|
||||||
@@ -84,7 +126,7 @@ def check_roles(member, recruit_id):
|
|||||||
if role.id == recruit_id:
|
if role.id == recruit_id:
|
||||||
return "Yes"
|
return "Yes"
|
||||||
|
|
||||||
@settings.command()
|
@settings.command(description="Aktualisiert die internen Daten.")
|
||||||
@default_permissions(manage_roles=True)
|
@default_permissions(manage_roles=True)
|
||||||
async def refresh(ctx):
|
async def refresh(ctx):
|
||||||
cur.execute("SELECT value FROM settings WHERE name='guild'")
|
cur.execute("SELECT value FROM settings WHERE name='guild'")
|
||||||
@@ -92,8 +134,7 @@ async def refresh(ctx):
|
|||||||
guild_id = cur.fetchone()
|
guild_id = cur.fetchone()
|
||||||
guild_id = guild_id[0]
|
guild_id = guild_id[0]
|
||||||
cur.execute("SELECT value FROM settings WHERE name='role_recruit'")
|
cur.execute("SELECT value FROM settings WHERE name='role_recruit'")
|
||||||
recruit_id = cur.fetchone()
|
recruit_id = cur.fetchone()[0]
|
||||||
recruit_id = recruit_id[0]
|
|
||||||
guild = bot.get_guild(guild_id)
|
guild = bot.get_guild(guild_id)
|
||||||
for role in guild.roles:
|
for role in guild.roles:
|
||||||
if role.id == recruit_id:
|
if role.id == recruit_id:
|
||||||
@@ -102,21 +143,12 @@ async def refresh(ctx):
|
|||||||
for member in guild.members:
|
for member in guild.members:
|
||||||
result = check_roles(member, recruit_id)
|
result = check_roles(member, recruit_id)
|
||||||
if result == "Yes":
|
if result == "Yes":
|
||||||
None
|
pass
|
||||||
else:
|
else:
|
||||||
if member.nick is None:
|
cur.execute("UPDATE recruits SET recruit = ?, nickname = ? WHERE discord_id = ?", (0, member.display_name, member.id))
|
||||||
nick = member.name
|
|
||||||
else:
|
|
||||||
nick = member.nick
|
|
||||||
cur.execute("UPDATE recruits SET recruit = ? WHERE discord_id = ?", (0, member.id))
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
await ctx.respond(f"Done.", ephemeral=True)
|
await ctx.respond(f"Done.", ephemeral=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@bot.event
|
@bot.event
|
||||||
async def on_member_update(previous, after):
|
async def on_member_update(previous, after):
|
||||||
cur.execute("SELECT value FROM settings WHERE name='role_recruit'")
|
cur.execute("SELECT value FROM settings WHERE name='role_recruit'")
|
||||||
|
|||||||
Reference in New Issue
Block a user