После отправки сообщения с помощью взаимодействия в discord.py я пытаюсь использовать кнопки для его редактирования. Редактирование возможно примерно в течение 30 минут после отправки сообщения, но после этого я сталкиваюсь с ошибкой «discord.errors.HTTPException: 401 Unauthorized (код ошибки: 50027): неверный токен веб-перехватчика» и не могу редактировать сообщение. Как я могу продолжить редактирование сообщения после этого момента?
async def editmsg(msg,con):
await msg.edit(content=con)
@app_commands.command(name='sendmsg', description='sendmsg')
async def sendmsg(self, interaction: Interaction):
await interaction.response.send_message(content='message')
msg = await interaction.original_response()
# The following code assumes that it is executed when a button is clicked.
await editmsg(msg,'editmessage')
Эта проблема вызвана истечением срока действия веб-перехватчика. Веб-перехватчики имеют срок действия, в течение которого они активны, и по истечении срока его действия веб-перехватчик становится недействительным. В случае API Discord.py время жизни веб-перехватчиков, вероятно, составляет менее 30 минут, поэтому вы и получаете эту проблему.
Глядя на исходный код Discord.py , мы видим, что они используют aiohttp.ClientSession
и отправляют запрос с использованием сеанса. Когда время этого сеанса истекает (я не смог найти точное число в исходном коде), этот запрос завершается неудачно, и запрос на выборку веб-перехватчика выдает ошибку.
Ваша проблема вызвана базовым исходным кодом Discord.py и его зависимостями. Я предлагаю попробовать другой подход или создать заявку на Discord.py GitHub.
Вы можете обойти эту проблему, используя вместо этого interaction.edit_original_response
. Он позволяет редактировать исходное сообщение даже через 30 минут. Более подробную информацию можно найти в официальной документации.
Interaction.edit_original_response не используется для кнопки.