Fixed Bug, that occured with many reasons and recruits
This commit is contained in:
70
main.py
70
main.py
@@ -265,7 +265,7 @@ class No_reason(discord.ui.Modal):
|
|||||||
recruit_id = ""
|
recruit_id = ""
|
||||||
def __init__(self, *args, **kwargs) -> None:
|
def __init__(self, *args, **kwargs) -> None:
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.add_item(discord.ui.InputText(label="Begründung", style=discord.InputTextStyle.long))
|
self.add_item(discord.ui.InputText(label="Begründung", style=discord.InputTextStyle.long, max_length=1000))
|
||||||
|
|
||||||
async def callback(self, interaction: discord.Interaction):
|
async def callback(self, interaction: discord.Interaction):
|
||||||
insert_no_vote(self.recruit_id, interaction.user.id, self.children[0].value)
|
insert_no_vote(self.recruit_id, interaction.user.id, self.children[0].value)
|
||||||
@@ -277,10 +277,14 @@ class No_reason(discord.ui.Modal):
|
|||||||
color=discord.Colour.green(),
|
color=discord.Colour.green(),
|
||||||
)
|
)
|
||||||
embed.add_field(name="Rekrut:", value=self.recruit_name)
|
embed.add_field(name="Rekrut:", value=self.recruit_name)
|
||||||
embed.add_field(name="Dein Grund", value=self.children[0].value)
|
reason_text = self.children[0].value
|
||||||
|
if len(reason_text)>1024:
|
||||||
|
embed.add_field(name="Dein Grund", value=reason_text[:976] + "[gekürzt, vollständiger Grund wurde gespeichert]")
|
||||||
|
else:
|
||||||
|
embed.add_field(name="Dein Grund", value=reason_text)
|
||||||
await interaction.response.send_message(embeds=[embed], ephemeral=True)
|
await interaction.response.send_message(embeds=[embed], ephemeral=True)
|
||||||
|
|
||||||
async def reason(discord_id, interaction):
|
async def ask_reason(discord_id, interaction):
|
||||||
with DBConnection() as cur:
|
with DBConnection() as cur:
|
||||||
cur.execute("SELECT nickname FROM recruits WHERE discord_id = ?", (discord_id,))
|
cur.execute("SELECT nickname FROM recruits WHERE discord_id = ?", (discord_id,))
|
||||||
nickname = cur.fetchone()[0]
|
nickname = cur.fetchone()[0]
|
||||||
@@ -298,7 +302,7 @@ class no_question(discord.ui.View):
|
|||||||
with DBConnection() as cur:
|
with DBConnection() as cur:
|
||||||
cur.execute("DELETE FROM no_votes WHERE id = ?", (self.vote_id, ))
|
cur.execute("DELETE FROM no_votes WHERE id = ?", (self.vote_id, ))
|
||||||
await self.message.delete()
|
await self.message.delete()
|
||||||
await reason(self.discord_id, interaction)
|
await ask_reason(self.discord_id, interaction)
|
||||||
@discord.ui.button(label="Nein", style=discord.ButtonStyle.grey)
|
@discord.ui.button(label="Nein", style=discord.ButtonStyle.grey)
|
||||||
async def no(self, button, interaction):
|
async def no(self, button, interaction):
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
@@ -320,7 +324,7 @@ class no_clicked_but_yes_vote_question(discord.ui.View):
|
|||||||
with DBConnection() as cur:
|
with DBConnection() as cur:
|
||||||
cur.execute("DELETE FROM yes_votes WHERE id = ?", (self.vote_id, ))
|
cur.execute("DELETE FROM yes_votes WHERE id = ?", (self.vote_id, ))
|
||||||
await self.message.delete()
|
await self.message.delete()
|
||||||
await reason(self.discord_id, interaction)
|
await ask_reason(self.discord_id, interaction)
|
||||||
@discord.ui.button(label="Nein", style=discord.ButtonStyle.grey)
|
@discord.ui.button(label="Nein", style=discord.ButtonStyle.grey)
|
||||||
async def no(self, button, interaction):
|
async def no(self, button, interaction):
|
||||||
await self.message.delete()
|
await self.message.delete()
|
||||||
@@ -365,7 +369,7 @@ async def process_no_vote(interaction, select):
|
|||||||
embed.add_field(name="Angegebener Grund", value=no_vote[0][0])
|
embed.add_field(name="Angegebener Grund", value=no_vote[0][0])
|
||||||
await interaction.response.send_message(embed=embed, view=no_question_inst, ephemeral=True)
|
await interaction.response.send_message(embed=embed, view=no_question_inst, ephemeral=True)
|
||||||
else:
|
else:
|
||||||
await reason(select.values[0], interaction)
|
await ask_reason(select.values[0], interaction)
|
||||||
|
|
||||||
class No_select25(discord.ui.View):
|
class No_select25(discord.ui.View):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -686,8 +690,33 @@ async def process_detailed_report(select, interaction):
|
|||||||
no_vote_text = no_vote_text + "**" + guild.get_member(vote[0]).display_name + "**: " + vote[1] + "\n"
|
no_vote_text = no_vote_text + "**" + guild.get_member(vote[0]).display_name + "**: " + vote[1] + "\n"
|
||||||
cur.execute("SELECT count(*) FROM no_votes WHERE discord_id_recruit = ?", (select.values[0],))
|
cur.execute("SELECT count(*) FROM no_votes WHERE discord_id_recruit = ?", (select.values[0],))
|
||||||
count_no_votes = cur.fetchone()[0]
|
count_no_votes = cur.fetchone()[0]
|
||||||
|
if len(no_vote_text) < 1024:
|
||||||
embed.add_field(name="Nein-Stimmen (" + str(count_no_votes) + "):", value=no_vote_text)
|
embed.add_field(name="Nein-Stimmen (" + str(count_no_votes) + "):", value=no_vote_text)
|
||||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
await interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
|
elif len(no_vote_text) > 4000:
|
||||||
|
# Text 1: no_vote_text
|
||||||
|
messages = len(no_vote_text) // 2000 + 1
|
||||||
|
for i in range(1, messages + 1):
|
||||||
|
max = 2000 * i
|
||||||
|
j = i - 1
|
||||||
|
min = 2000 * j
|
||||||
|
text = no_vote_text[min: max]
|
||||||
|
if text != '\n':
|
||||||
|
await interaction.user.send(text)
|
||||||
|
embed_dm = discord.Embed(
|
||||||
|
title="Abstimmungen für " + nick,
|
||||||
|
color=discord.Colour.blurple(),
|
||||||
|
description="Zu viele Buchstaben! Schau für die Begründungen in deine DMs!"
|
||||||
|
)
|
||||||
|
embed_dm.add_field(name="Ja-Stimmen (" + str(count_yes_votes) + "):", value=yes_vote)
|
||||||
|
no_vote_list = ""
|
||||||
|
for vote in no_votes:
|
||||||
|
no_vote_list = (no_vote_list + "" + guild.get_member(vote[0]).display_name + "\n")
|
||||||
|
embed_dm.add_field(name="Nein-Stimmen (" + str(count_no_votes) + "):", value=no_vote_list)
|
||||||
|
await interaction.response.send_message(embed=embed_dm, ephemeral=True)
|
||||||
|
else:
|
||||||
|
embed.description = "**Nein-Stimmen (" + str(count_no_votes) + "):**" + no_vote_text
|
||||||
|
await interaction.response.send_message(embed=embed, ephemeral=True)
|
||||||
|
|
||||||
@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)
|
||||||
@@ -744,8 +773,8 @@ async def process_generate_report(select, interaction):
|
|||||||
title="Rekrutenbesichtigung: Erstellter Report",
|
title="Rekrutenbesichtigung: Erstellter Report",
|
||||||
color=discord.Colour.blurple(), # Pycord provides a class with default colors you can choose from
|
color=discord.Colour.blurple(), # Pycord provides a class with default colors you can choose from
|
||||||
)
|
)
|
||||||
description = "```\n"
|
|
||||||
guild = interaction.guild
|
guild = interaction.guild
|
||||||
|
description = ""
|
||||||
for recruit in select.values:
|
for recruit in select.values:
|
||||||
with DBConnection() as cur:
|
with DBConnection() as cur:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
@@ -762,9 +791,25 @@ async def process_generate_report(select, interaction):
|
|||||||
no_votes = cur.fetchall()
|
no_votes = cur.fetchall()
|
||||||
for vote in no_votes:
|
for vote in no_votes:
|
||||||
nick = guild.get_member(vote[0]).display_name
|
nick = guild.get_member(vote[0]).display_name
|
||||||
description = description + "Begründung von " + nick + ": " + vote[1] + "\n"
|
description = description + "Begründung von *" + nick + "*: " + vote[1] + "\n"
|
||||||
description = description + "\n"
|
description = description + "\n"
|
||||||
description = description + "```"
|
if len(description) > 4096:
|
||||||
|
messages = len(description) // 1900 + 1
|
||||||
|
for i in range(1, messages + 1):
|
||||||
|
max = 1900 * i
|
||||||
|
j = i - 1
|
||||||
|
min = 1900 * j
|
||||||
|
text = description[min: max]
|
||||||
|
if text != '\n':
|
||||||
|
await interaction.user.send('```' + text + '```')
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Ich ertrinke in Buchstaben!",
|
||||||
|
color=discord.Colour.green(),
|
||||||
|
description="Schau in deine DMs!\n Eventuell musst du ein wenig was ordentlich rücken..."
|
||||||
|
)
|
||||||
|
await interaction.followup.send(embed=embed, ephemeral=True)
|
||||||
|
else:
|
||||||
|
description = "```" + description + "```"
|
||||||
embed.description = description
|
embed.description = description
|
||||||
await interaction.followup.send(embed=embed, ephemeral=True)
|
await interaction.followup.send(embed=embed, ephemeral=True)
|
||||||
|
|
||||||
@@ -837,7 +882,7 @@ class report_buttons(discord.ui.View):
|
|||||||
generate_report50_inst = generate_report50()
|
generate_report50_inst = generate_report50()
|
||||||
generate_report50_inst.children[0].options = build_option_list()[0]
|
generate_report50_inst.children[0].options = build_option_list()[0]
|
||||||
generate_report50_inst.children[0].max_values = get_count_recruits()
|
generate_report50_inst.children[0].max_values = get_count_recruits()
|
||||||
generate_report50_inst.children[1].options = build_option_list()[0]
|
generate_report50_inst.children[1].options = build_option_list(2)[0]
|
||||||
generate_report50_inst.children[1].max_values = get_count_recruits()
|
generate_report50_inst.children[1].max_values = get_count_recruits()
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title="Rekrut wählen",
|
title="Rekrut wählen",
|
||||||
@@ -874,7 +919,10 @@ def create_report_embed():
|
|||||||
no_votes = cur.fetchall()
|
no_votes = cur.fetchall()
|
||||||
description = description + "**" + recruit[0] + ":** " + str(yes_count) + " Ja, " + str(no_count) + " Nein.\n"
|
description = description + "**" + recruit[0] + ":** " + str(yes_count) + " Ja, " + str(no_count) + " Nein.\n"
|
||||||
for no_vote in no_votes:
|
for no_vote in no_votes:
|
||||||
description = description + "Begründung von " + guild.get_member(no_vote[1]).display_name + ": " + no_vote[0] + "\n"
|
if len(no_vote[0])> 78:
|
||||||
|
description = description + "Begründung von *" + guild.get_member(no_vote[1]).display_name + "*: " + no_vote[0][:75] + "[gekürzt]\n"
|
||||||
|
else:
|
||||||
|
description = description + "Begründung von *" + guild.get_member(no_vote[1]).display_name + "*: " + no_vote[0] + "\n"
|
||||||
description = description + "\n\n"
|
description = description + "\n\n"
|
||||||
else:
|
else:
|
||||||
description = description + "**" + recruit[0] + ":** " + str(yes_count) + " Ja, " + str(no_count) + " Nein.\n"
|
description = description + "**" + recruit[0] + ":** " + str(yes_count) + " Ja, " + str(no_count) + " Nein.\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user