Существует ли такое?Не существует.
выдавать предварительно рандомные текстовые реакции типа "это круто", "мне грустно", "да", "давайте поможем", в зависимости от контекста видеоЭто такое натягивание совы на глобус, что подозреваю, что с тем же успехом можно давать совершенно случайные реакции к любому видео.
Дополнительно хотелось бы иметь функцию, которая может отслеживать персонажей в видео и записывать информацию о них в файл для дальнейшего анализаЭто пожалуйста. Берете opencv и вперед.
какие подходы, фреймворки или библиотеки вы бы рекомендовали для реализации такой системы?Рекомендую не браться за задачу, которую вы описали, она слишком абстрактна. Ставьте четкие задачи и последовательно их решайте.
@client.command()
@app_commands.checks.has_any_role('Library Devs', 'Moderators', 492212595072434186)
async def cool(interaction: discord.Interaction):
await interaction.response.send_message('Сообщение увидит только человек с соответствующей ролью')
Я рассмотрел несколько вариантов, но они либо были слишком базовы для моих нужд, либо требовательны к ресурсам.А как по вашему библиотека должна понимать что правильно? Придётся разбираться в "слишком базовых" вещах.
Грамматические ошибки (например, "Я не знает куда он пошёл." должно стать "Я не знаю, куда он пошёл.").А может быть "Она не знает куда он пошёл"?
str
int
float
bool
disnake.abc.GuildChannel*
disnake.User or disnake.Member**
disnake.Role**
disnake.Attachment
disnake.abc.Snowflake***
Как исправить ошибкуЛибо переписать функцию, потому что во взаимодействии нет методов и атрибутов, которые вы пытаетесь использовать, либо оставить команду обычной.
for key, value in inter.text_values.items():
embed.add_field(
name=key.capitalize(),
value=value[:1024],
inline=False,
)
embed.add_field(
name='Заголовок',
value=f'{inter.text_values.get("date", "")}{inter.text_values.get("time", "")',
inline=False,
)
В чём проблема?В том что класс staffapp наследуется от commands.Cog, а не ui.Modal. Эффекта от того что вы сделаете в произвольном классе функцию callback не будет.
<@user_id>
. Любая работа с ней аналогична работе со строками.class Simple(disnake.ui.View):
"""
Embed Paginator.
Parameters:
----------
timeout: int
How long the Paginator should timeout in, after the last interaction. (In seconds) (Overrides default of 60)
PreviousButton: disnake.ui.Button
Overrides default previous button.
NextButton: disnake.ui.Button
Overrides default next button.
PageCounterStyle: disnake.ButtonStyle
Overrides default page counter style.
InitialPage: int
Page to start the pagination on.
"""
def __init__(self, *,
timeout: int = 60,
PreviousButton: disnake.ui.Button = disnake.ui.Button(emoji=disnake.PartialEmoji(name="\U000025c0")),
NextButton: disnake.ui.Button = disnake.ui.Button(emoji=disnake.PartialEmoji(name="\U000025b6")),
PageCounterStyle: disnake.ButtonStyle = disnake.ButtonStyle.grey,
InitialPage: int = 0) -> None:
self.PreviousButton = PreviousButton
self.NextButton = NextButton
self.PageCounterStyle = PageCounterStyle
self.InitialPage = InitialPage
self.pages = None
self.ctx = None
self.message = None
self.current_page = None
self.page_counter = None
self.total_page_count = None
super().__init__(timeout=timeout)
async def start(self, ctx: commands.Context, pages: list[disnake.Embed]):
self.pages = pages
self.total_page_count = len(pages)
self.ctx = ctx
self.current_page = self.InitialPage
self.PreviousButton.callback = self.previous_button_callback
self.NextButton.callback = self.next_button_callback
self.page_counter = SimplePaginatorPageCounter(style=self.PageCounterStyle,
TotalPages=self.total_page_count,
InitialPage=self.InitialPage)
self.add_item(self.PreviousButton)
self.add_item(self.page_counter)
self.add_item(self.NextButton)
self.message = await ctx.send(embed=self.pages[self.InitialPage], view=self)
async def previous(self):
if self.current_page == 0:
self.current_page = self.total_page_count - 1
else:
self.current_page -= 1
self.page_counter.label = f"{self.current_page + 1}/{self.total_page_count}"
await self.message.edit(embed=self.pages[self.current_page], view=self)
async def next(self):
if self.current_page == self.total_page_count - 1:
self.current_page = 0
else:
self.current_page += 1
self.page_counter.label = f"{self.current_page + 1}/{self.total_page_count}"
await self.message.edit(embed=self.pages[self.current_page], view=self)
async def next_button_callback(self, interaction: disnake.Interaction):
if interaction.user != self.ctx.author:
embed = disnake.Embed(description="You cannot control this pagination because you did not execute it.",
color=disnake.Colour.red())
return await interaction.response.send_message(embed=embed, ephemeral=True)
await interaction.response.defer()
await self.next()
async def previous_button_callback(self, interaction: disnake.Interaction):
if interaction.user != self.ctx.author:
embed = disnake.Embed(description="You cannot control this pagination because you did not execute it.",
color=disnake.Colour.red())
return await interaction.response.send_message(embed=embed, ephemeral=True)
await interaction.response.defer()
await self.previous()
class SimplePaginatorPageCounter(disnake.ui.Button):
def __init__(self, style: disnake.ButtonStyle, TotalPages, InitialPage):
super().__init__(label=f"{InitialPage + 1}/{TotalPages}", style=style, disabled=True)
embeds = [disnake.Embed(title="First embed"),
disnake.Embed(title="Second embed"),
disnake.Embed(title="Third embed")]
await Simple().start(ctx, pages=embeds)
Как вызвать Secret в Dockerfile?Secrets или multi-stage.
git clone
и сомнительных секретов.