(Py-cord) Как добавить view, который принимает некоторые значения?
У меня есть класс (точнее 2, но это ничего не меняет). Я хочу добавить его в bot.add_view()
, но класс принимает некоторые значения, из-за чего возникает ошибка TypeError: __init__() missing 3 required positional arguments: 'q_embed', 'title', and 'link'
. Как это побороть?
Вот сам код:
import discord
from discord.ext import commands
bot = commands.Bot(intents = discord.Intents.all())
@bot.event
async def on_ready():
bot.add_view(unhide())
bot.add_view(hide())
class unhide(discord.ui.View):
def __init__(self, q_embed, title, link):
super().__init__(timeout = None)
self.q_embed = q_embed
self.title = title
self.link = link
@discord.ui.button(label = 'Развернуть', style = discord.ButtonStyle.grey, custom_id = 'unhide')
async def unhide(self, button, interaction):
link_button = discord.ui.Button(label = 'Перейти к вопросу', style = discord.ButtonStyle.url, url = self.link)
view = hide(self.q_embed, self.title, self.link)
view.add_item(link_button)
await interaction.response.edit_message(content = '(Просмотрено)', embed = self.q_embed, view = view)
class hide(discord.ui.View):
def __init__(self, q_embed, title, link):
super().__init__(timeout = None)
self.q_embed = q_embed
self.title = title
self.link = link
@discord.ui.button(label = 'Свернуть', style = discord.ButtonStyle.grey, custom_id = 'hide')
async def hide(self, button, interaction):
embed = discord.Embed(title = '(Просмотрено)', description = self.title)
await interaction.response.edit_message(content = None, embed = embed, view = unhide(self.q_embed, self.title, self.link))
Источник: Stack Overflow на русском