Wolf_Yout
@Wolf_Yout

Как сделать надпись «Discord Bot Думает» dislash.py?

Я хочу сделать надпись думания для продления времени, но не знаю как
Вот для чего нужно:
61e5c37926b4a436044039.png
Возможно понадобиться код:
@slash_command(name='play',description='Начать воспроизведение',options=[Option("search", "введите название/url", required=True)])
    async def _playinslash(self, ctx: commands.Context, *, search: str = None):
            ctx.voice_state = self.get_voice_state(ctx)

            if not search:
                return await ctx.reply('Ошибка: Пропушен обязательный аргумент search(URL/Текст)\nПримерное использование:\nm!play lum!x slowed reverb')

            if not ctx.voice_state.voice:
                return await ctx.reply("Пожалуйста, сначала введи /join")

            try:
                source = await YTDLSource.create_source(ctx,
                                                        search,
                                                        loop=self.bot.loop)
            except YTDLError as e:
                await ctx.send('Ошибка: {}'.format(str(e)))
            else:
                song = Song(source)

                await ctx.voice_state.songs.put(song)
                # row_of_buttons = ActionRow(
                #     Button(style=ButtonStyle.red, label="Replay", custom_id="re"))
                await ctx.reply(f"Добавлено {source}")

    @slash_command(name="replay",description="Начать воспроизведение заново.")
    async def _re(self, ctx: commands.Context):
        self.current = None
        ctx.voice_state = self.get_voice_state(ctx)
        try:
            source2 = await YTDLSource.create_source(ctx,
                                                    ctx.voice_state.current.now_name(),
                                                    loop=self.bot.loop)
        except YTDLError as e:
            await ctx.send('Ошибка: {}'.format(str(e)))
        else:
            song2 = Song(source2)

            await ctx.voice_state.songs.put(song2)
            ctx.voice_state.skip()
            await ctx.reply(f'<:succes_title:925401308813471845>')
  • Вопрос задан
  • 381 просмотр
Решения вопроса 1
@y7o4ka
Если команда затрачивает больше 3 секунд на ответ, дискорд отмечает её как невыполненную и девалидирует токен, нужный для отправки ответа. reply(), в случае, если токен неверный, отправляет ответ в dblt обычного сообщения.
Исправить это можно, добавив в начало команды
await ctx.reply(..., type=ResponseType.DeferredUpdateMessage)
(discord docs)

Насколько я помню, слеш-команды в dislash используют dislash.SlashInteraction, а не commands.Context
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы