В disnake (библиотека для Discord API, которая является форком discord.py), когда вы нажимаете на кнопку, создается объект `MessageInteraction`. Этот объект содержит информацию о интеракции, которая была инициирована через нажатие на кнопку.
Чтобы получить содержимое сообщения, к которому была прикреплена кнопка, вам нужно обратиться к свойству `message` объекта интеракции. Пример кода может выглядеть так:
```python
import disnake
from disnake.ext import commands
class MyButton(disnake.ui.Button):
def __init__(self, label: str, custom_id: str):
super().__init__(label=label, custom_id=custom_id)
async def callback(self, interaction: disnake.MessageInteraction):
# Получаем содержимое сообщения через свойство message
message_content = interaction.message.content
# Теперь message_content содержит текст сообщения, к которому была прикреплена кнопка
await interaction.response.send_message(f"Содержимое сообщения: {message_content}", ephemeral=True)
bot = commands.Bot(command_prefix="!")
@bot.event
async def on_ready():
print(f"Logged in as {bot.user}!")
@bot.command()
async def button(ctx):
button = MyButton(label="Нажми меня", custom_id="my_button")
view = disnake.ui.View()
view.add_item(button)
await ctx.send("Нажмите на кнопку чтобы получить содержимое сообщения.", view=view)
bot.run("YOUR_TOKEN")
```
В этом примере при нажатии кнопки функция `callback()` класса `MyButton` вызывает `interaction.message.content` чтобы получить содержимое текста оригинального сообщения. Затем она отправляет сообщение с этим содержимым обратно в чат. Обратите внимание, что отправленное сообщение будет видно только пользователю, который нажал на кнопку (`ephemeral=True`).
Пожалуйста, убедитесь, что вы используете актуальные версии библиотеки и вы полагаетесь на последнюю документацию disnake, так как API может изменяться со временем.