Implemented Edditing of message. Known Bug: View is not up to date
This commit is contained in:
36
main.py
36
main.py
@@ -12,6 +12,7 @@ with open('config.json') as user_file:
|
|||||||
config = json.loads(user_file.read())
|
config = json.loads(user_file.read())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def connect_db():
|
def connect_db():
|
||||||
try:
|
try:
|
||||||
conn = mariadb.connect(
|
conn = mariadb.connect(
|
||||||
@@ -35,8 +36,10 @@ intents = discord.Intents.default()
|
|||||||
intents.members = True
|
intents.members = True
|
||||||
bot = discord.Bot(intents = intents)
|
bot = discord.Bot(intents = intents)
|
||||||
|
|
||||||
|
|
||||||
@bot.event
|
@bot.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
|
bot.add_view(Yes_select())
|
||||||
print(f"{bot.user} is ready and online!")
|
print(f"{bot.user} is ready and online!")
|
||||||
|
|
||||||
conn = connect_db()
|
conn = connect_db()
|
||||||
@@ -56,19 +59,25 @@ def build_option_list():
|
|||||||
records = cur.fetchall()
|
records = cur.fetchall()
|
||||||
for row in records:
|
for row in records:
|
||||||
options.append(discord.SelectOption(value=str(row[0]), label=str(row[1])))
|
options.append(discord.SelectOption(value=str(row[0]), label=str(row[1])))
|
||||||
|
print("Ich wurde benutzt!")
|
||||||
return options
|
return options
|
||||||
|
|
||||||
|
|
||||||
class Yes_select(discord.ui.View):
|
class Yes_select(discord.ui.View):
|
||||||
@discord.ui.select( # the decorator that lets you specify the properties of the select menu
|
def __init__(self):
|
||||||
placeholder = "Choose a Flavor!", # the placeholder text that will be displayed if nothing is selected
|
super().__init__(timeout=None) # timeout of the view must be set to None
|
||||||
min_values = 1, # the minimum number of values that must be selected by the users
|
@discord.ui.select(
|
||||||
max_values = get_count_recruits(), # the maximum number of values that can be selected by the users
|
custom_id="yes1",
|
||||||
options = build_option_list()
|
placeholder="Rekruten wählen...",
|
||||||
|
min_values=1,
|
||||||
|
max_values=get_count_recruits(),
|
||||||
|
options=build_option_list()
|
||||||
)
|
)
|
||||||
async def select_callback(self, select, interaction): # the function called when the user is done selecting options
|
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!")
|
await interaction.response.send_message(f"Awesome! I like {select.values[0]} too!")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def create_yes_embed():
|
def create_yes_embed():
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Rekrutenbesichtigung: Ja-Stimme",
|
title="Rekrutenbesichtigung: Ja-Stimme",
|
||||||
@@ -82,12 +91,15 @@ async def send_yes_message(channel):
|
|||||||
message = await channel.send(embed=create_yes_embed(), view=Yes_select())
|
message = await channel.send(embed=create_yes_embed(), view=Yes_select())
|
||||||
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'message_voting_yes'", (message.id, ))
|
cur.execute("UPDATE settings SET VALUE = ? WHERE name = 'message_voting_yes'", (message.id, ))
|
||||||
|
|
||||||
|
|
||||||
async def edit_yes_message():
|
async def edit_yes_message():
|
||||||
cur.execute("SELECT value FROM settings WHERE name='channel_voting'")
|
cur.execute("SELECT value FROM settings WHERE name='channel_voting'")
|
||||||
channel = bot.get_channel(int(cur.fetchone()[0]))
|
channel = bot.get_channel(int(cur.fetchone()[0]))
|
||||||
cur.execute("SELECT value FROM settings WHERE name='message_voting_yes'")
|
cur.execute("SELECT value FROM settings WHERE name='message_voting_yes'")
|
||||||
message = await channel.fetch_message(int(cur.fetchone()[0]))
|
message = await channel.fetch_message(int(cur.fetchone()[0]))
|
||||||
await message.edit(embed=create_yes_embed(), view=Yes_select())
|
conn.commit()
|
||||||
|
result = await message.edit(embed=create_yes_embed(), view=Yes_select())
|
||||||
|
print("Edited!")
|
||||||
|
|
||||||
@settings.command(description="Sendet die Nachricht zum Abstimmen in den aktuellen Channel.")
|
@settings.command(description="Sendet die Nachricht zum Abstimmen in den aktuellen Channel.")
|
||||||
@default_permissions(manage_roles=True)
|
@default_permissions(manage_roles=True)
|
||||||
@@ -147,6 +159,7 @@ async def refresh(ctx):
|
|||||||
else:
|
else:
|
||||||
cur.execute("UPDATE recruits SET recruit = ?, nickname = ? WHERE discord_id = ?", (0, member.display_name, member.id))
|
cur.execute("UPDATE recruits SET recruit = ?, nickname = ? WHERE discord_id = ?", (0, member.display_name, member.id))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
await edit_yes_message()
|
||||||
await ctx.respond(f"Done.", ephemeral=True)
|
await ctx.respond(f"Done.", ephemeral=True)
|
||||||
|
|
||||||
@bot.event
|
@bot.event
|
||||||
@@ -154,15 +167,20 @@ 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'")
|
||||||
recruit_id = cur.fetchone()
|
recruit_id = cur.fetchone()
|
||||||
recruit_id = recruit_id[0]
|
recruit_id = recruit_id[0]
|
||||||
|
found = False
|
||||||
for role in after.roles:
|
for role in after.roles:
|
||||||
if role.id == recruit_id:
|
if role.id == recruit_id:
|
||||||
recruit_update(after, 1, cur, conn)
|
recruit_update(after, 1, cur, conn)
|
||||||
return None
|
found = True
|
||||||
|
break
|
||||||
|
if found:
|
||||||
|
pass
|
||||||
# Kein Rekrut
|
# Kein Rekrut
|
||||||
|
else:
|
||||||
for role in previous.roles:
|
for role in previous.roles:
|
||||||
if role.id == recruit_id:
|
if role.id == recruit_id:
|
||||||
recruit_update(after, 0, cur, conn)
|
recruit_update(after, 0, cur, conn)
|
||||||
return None
|
break
|
||||||
|
await edit_yes_message()
|
||||||
|
|
||||||
bot.run(os.getenv('TOKEN')) # run the bot with the token
|
bot.run(os.getenv('TOKEN')) # run the bot with the token
|
||||||
|
|||||||
Reference in New Issue
Block a user