Как изменить ответ, отправленный ботом Discord с помощью кнопкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как изменить ответ, отправленный ботом Discord с помощью кнопки

Сообщение Anonymous »

С помощью discord.py я создаю бота, который по команде отправляет последовательность ответов с помощью меню выбора. В зависимости от выбора, сделанного в меню, он обновляет текст и меню выбора, отображаемые в ответе. После 8 меню выбора я снова изменяю ответ, добавляя новый текст и кнопку «Продолжить». Затем я отправляю сообщение в канал. Когда пользователь нажимает кнопку «Продолжить», он должен снова изменить ответ, но на этом этапе происходит сбой — ответ не обновляется и отображается «Ошибка взаимодействия».

Код: Выделить всё

async def cmd_choixpeau(interaction : discord.Interaction) :
class bouton_choixpeau_suivant(discord.ui.View) :
@discord.ui.button(label="C'est partis", style=discord.ButtonStyle.blurple)
async def suivant_callback(self, interaction : discord.Interaction, button) :
await questionnaire_choixpeau(interaction, Q1, id)

await interaction.response.send_message(embed = embed_choixpeau, view = bouton_choixpeau_suivant(), ephemeral = True)

Код: Выделить всё

async def questionnaire_choixpeau(interaction : discord.Interaction, numQ : dict, id : int) :
class select_questionnaire(discord.ui.View):
@discord.ui.select( ... )
async def select_callback(self, ctx : discord.Interaction, select) :
if numQ == Q1 :
await questionnaire_choixpeau(ctx, Q2, id)
elif numQ == Q2 :
await questionnaire_choixpeau(ctx, Q3, id)
elif numQ == Q3 :
await questionnaire_choixpeau(ctx, Q4, id)
elif numQ == Q4 :
await questionnaire_choixpeau(ctx, Q5, id)
elif numQ == Q5 :
await questionnaire_choixpeau(ctx, Q6, id)
elif numQ == Q6 :
await questionnaire_choixpeau(ctx, Q7, id)
elif numQ == Q7 :
await questionnaire_choixpeau(ctx, Q8, id)
elif numQ == Q8 :
await attribution_maison(ctx, id)

await interaction.response.edit_message(embed = embed, attachments = [], view = select_questionnaire())

Код: Выделить всё

async def attribution_maison(interaction : discord.Interaction, id : int) :
. . .
await annonce_maison(interaction, id, max_key[0])

Код: Выделить всё

async def annonce_maison(interaction : discord.Interaction, id : int, maison : str) :
class bouton_tuto_suivant(discord.ui.View) :
def __init__(self, maison):
super().__init__()  # Appel au constructeur parent pour initialiser la vue
self.maison = maison

@discord.ui.button(label="Continuer", style=discord.ButtonStyle.blurple)
async def suivant_callback(self, ctx : discord.Interaction, button) :

if maison == "Gryffondor" :
bienvenue_gryffondor = discord.Embed(...)
await ctx.response.edit_message(embed = bienvenue_gryffondor, view = None)
...
embed = discord.Embed(...)
await interaction.response.edit_message(embed = embed, view = bouton_tuto_suivant(maison))
Я пробовал менять порядок отправки сообщения и обновления ответа, а также использовать взаимодействие функции и кнопки, но это не сработало.
Я пробовал менять порядок отправки сообщения и обновления ответа, а также использовать взаимодействие функции и кнопки, но это не сработало.
Я пробовал менять порядок отправки сообщения и обновления ответа, а также использовать взаимодействие функции и кнопки, но это не сработало.
Я пробовал менять порядок отправки сообщения и обновления ответа, а также использовать взаимодействие функции и кнопки, но это не сработало.
Я пробовал менять порядок отправки сообщения и обновления ответа, а также использовать взаимодействие функции и кнопки, но это не сработало.
п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... h-a-button
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»