object has no attribute 'append'

error
An error occurred: 'TutorialSelect' object has no attribute 'append'
An error occurred: 'TutorialSelect' object has no attribute 'append'
mein code
@ticket.command(description="Add a ticket option")
async def select(self, ctx, name: str, emoji: str):
global my_option_count
await ctx.defer(ephemeral=True)
ticket_message = await db.get_message(ctx.guild.id)
if ticket_message:
try:
if await db.name_exists(ctx.guild.id, name):
await ctx.respond("This name is already in use. Please choose a different name.", ephemeral=True)
return
if my_option_count >= 5:
await ctx.respond(
"You have reached the maximum number of options (5). Please remove an option before adding a new one.",
ephemeral=True)
return
select = TutorialSelect()
select.append(discord.SelectOption(label=name, emoji=emoji))
await ctx.respond("The option was added successfully.", ephemeral=True)
my_option_count += 1
except Exception as e:
await ctx.respond(f"An error occurred: {e}", ephemeral=True)
print(name)

await db.add_option(ctx.guild.id, name)
else:
await ctx.respond(f"The ticket message was not found. Please {self.bot.get_cmd('ticket setup')} First!", ephemeral=True, delete_after=10)
@ticket.command(description="Add a ticket option")
async def select(self, ctx, name: str, emoji: str):
global my_option_count
await ctx.defer(ephemeral=True)
ticket_message = await db.get_message(ctx.guild.id)
if ticket_message:
try:
if await db.name_exists(ctx.guild.id, name):
await ctx.respond("This name is already in use. Please choose a different name.", ephemeral=True)
return
if my_option_count >= 5:
await ctx.respond(
"You have reached the maximum number of options (5). Please remove an option before adding a new one.",
ephemeral=True)
return
select = TutorialSelect()
select.append(discord.SelectOption(label=name, emoji=emoji))
await ctx.respond("The option was added successfully.", ephemeral=True)
my_option_count += 1
except Exception as e:
await ctx.respond(f"An error occurred: {e}", ephemeral=True)
print(name)

await db.add_option(ctx.guild.id, name)
else:
await ctx.respond(f"The ticket message was not found. Please {self.bot.get_cmd('ticket setup')} First!", ephemeral=True, delete_after=10)
meine class
class TutorialSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder="Triff eine Auswahl",
options=t_options
)

async def callback(self, select, interaction):
if "Ticket" in select.values:
labels = [option.label for option in select.options]
select.append_option(t_options)
await interaction.response.edit_message(view=self)
class TutorialSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder="Triff eine Auswahl",
options=t_options
)

async def callback(self, select, interaction):
if "Ticket" in select.values:
labels = [option.label for option in select.options]
select.append_option(t_options)
await interaction.response.edit_message(view=self)
14 Replies
Martin B. ツ
Martin B. ツ16mo ago
Sowohl discord.py als auch bei py-cord wird die Funktion append_option() in der discord.ui.Select Klasse verwendet. Also anstelle von .append().
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
wo meinst du?
Martin B. ツ
Martin B. ツ16mo ago
select = TutorialSelect()
select.append(discord.SelectOption(label=name, emoji=emoji))
select = TutorialSelect()
select.append(discord.SelectOption(label=name, emoji=emoji))
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
da muss append_option() hin ?
Martin B. ツ
Martin B. ツ16mo ago
Ja, .append() gibt es nicht. Steht auch in den jeweiligen docs, weiß ja nicht welche lib du nimmst aber bei py-cord und discord.py ist das so.
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
es geht jetzt aber es werden auf alle Server noch die Option angezeigt aber es sollte nicht so sein könntest du mir dabei helfen? @Martin B. ツ
Martin B. ツ
Martin B. ツ16mo ago
Leider nein, ist ja der selbe code wie aus <#1237699020659490826> im Codingkeks Server. Hätte ich es direkt gewusst würde ich es dir sagen, weiß grad aber auch nicht woran es liegt. Hier wäre es dann auch gut den vollständigen code zu sehen mit allen Hilfsfunktionen und Klassen wie z.B. das ganze select, den command wo die optionen falsch angezeigt werden etc. Was mir auch noch so auffällt, Dein callback async def callback(self, select, interaction): darf nur self und interaction enthalten, kein weiteres arg, denn "self" ist in dem fall die instanz der Klasse discord.ui.Select, dann braucht man nur noch die interaction
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
denn ist alles rot was mit select zu tun hat
Martin B. ツ
Martin B. ツ16mo ago
Überall wo du im callback code "select" verwendest, musst du es entsprechend durch "self" ersetzen. Dann ist es richtig.
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
aso ok danke
async def callback(self, interaction):
if "Ticket" in self.values:
labels = [option.label for option in self.options]
self.append_option(t_options)
await interaction.response.edit_message(view=self)
async def callback(self, interaction):
if "Ticket" in self.values:
labels = [option.label for option in self.options]
self.append_option(t_options)
await interaction.response.edit_message(view=self)
so?
Martin B. ツ
Martin B. ツ16mo ago
await interaction.response.edit_message(view=self) view=self geht in dem Fall nicht. Das view arg muss in dem Fall auch eine discord.ui.View Klasse sein und nicht die aktuelle instanz von deinem discord.ui.Select. Kannst dementsprechend aber bei beiden libs mit self.view auf die View Klasse zugreifen, die von dem Select benutzt wird
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
sonst ist alles richtig?
Martin B. ツ
Martin B. ツ16mo ago
Sollte passen, t_options hattest du ja anderweitig außerhalb des selects definiert so wie ich es in Erinnerung hab. Sollte schonmal passen, warum von dem jeweilig anderen Server die daten mit angezeigt bin weiß ich grad nicht. Vllt nochmal die db Abfragen überprüfen.
ꜱᴀᴊᴏ ᴍᴏɴᴛᴀɴᴀ ❦
Wenn ich „Ticket entfernen“ ausführe, wird die Option nicht angezeigt. beim „Ticket setup “ zeigt alle an Ich verstehe nicht, warum alle anderen Optionen angezeigt werden.

Did you find this page helpful?