Дискорд не работает с кнопки

уже на протяжении нескольких месяцев сталкиваюсь с одной проблемой в discord.py и discord_components, проблема в том, что когда я создаю кнопку, отправляю её и жду нажатия, после этого Interaction может как прийти, так и не прийти, после чего следует ошибка Interaction is unknown, чаще всего это происходит, если нажать на кнопку с телефона. Вот код:

from discord_components import Button, ButtonStyle from discord.ext import commands import discord client = commands.Bot(command_prefix=p, intents=discord.Intents.all()) last = await channel.send(embed=discord.Embed(description=f»Всё верно?»), components = [[Button(style=ButtonStyle.blue, label=’Подтвердить’, custom_id=»yes»), Button(style=ButtonStyle.gray, label = «Отменить», custom_id = «cancel»)]]) interaction = await client.wait_for(«button_click», check = lambda message: message.author == intt.author)

  • Вопрос задан 28 авг. 2022
  • 110 просмотров

Комментировать
Решения вопроса 1

fenrir1121

Смерть Discord ботов

Начни с документации

Универсальный ответ по discord_components
С момента написания того ответа discord.py уже обновился до 2.0 и теперь в нем тоже есть кнопки.

А до момента когда ваши компоненты вообще перестанут работать осталось примерно пол года

Источник: qna.habr.com

Discord.js | Кнопки не работают после перезапуска бота

Я попытался поместить событие clickButton в свой обработчик событий, но это не сработало, так как я получаю много ошибок. Как сделать так, чтобы кнопки работали даже после перезагрузки?

The Infinite Star 10 Июл 2021 в 16:14

Использование вашего обработчика/прослушивателя событий — это единственный способ заставить кнопки работать после перезапуска, поскольку и сборщик кнопок, и awaitButtons перестают прослушивать при перезапуске. Лучше пытаться исправить свои ошибки, чем избегать их.

Squiddleton
10 Июл 2021 в 16:21

2 ответа

Лучший ответ

Проблема

Причина, по которой ваши кнопки не работают после перезапуска бота, заключается в том, что ваш обработчик событий client.on(«clickButton») находится внутри кода вашей команды «ticket-setup». Это означает, что ваше событие настраивается только после того, как команда настройки тикета используется после перезапуска бота, или, другими словами, когда для этого файла вызывается execute() после запуска бота.

Еще по теме:  Безопасен ли дискорд для общения

Подумайте об этом: ваш код client.on(«clickButton») не будет достигнут до тех пор, пока не будет вызвана функция execute() вашей команды ticket-setup . Это вызовет у вас множество проблем. Прежде всего, как упоминалось выше, событие clickButton даже не обрабатывается, пока вы не используете ticket-setup хотя бы один раз после запуска бота. Во-вторых, при каждом использовании команды будет создаваться дополнительный обработчик событий . Другими словами, если бы вы использовали команду ticket-setup дважды или более, код в вашем обработчике clickButton выполнялся бы более одного раза при каждом нажатии ваших кнопок (в в вашем конкретном сценарии, при каждом нажатии кнопки будет создано более одного билета).

Решение

Проблема, с которой вы столкнулись, решается довольно просто. Вам просто нужно полностью переместить обработчик событий clickButton из метода execute() . Возможно, переместите его в свой основной файл server.js или bot.js вместе с обработчиками событий client.on(«ready») и client.on(«message») . Это гарантирует, что обработчик событий clickButton будет настроен только один раз и сразу при запуске бота.

Обратите внимание, однако, что вам нужно внести некоторые незначительные дополнения в обработчик событий clickButton , чтобы обеспечить его правильную работу. Вам необходимо переместить код для ваших hiEmbed и closeTicketButton в обработчик client.on(«clickButton») .

Вот как это может выглядеть в server.js на основе кода вашего вопроса:

client.on(‘clickButton’, async (button) => < await button.clicker.fetch(); await button.reply.defer(); const user = button.clicker.user; const hiEmbed = new Discord.MessageEmbed() .addField(ticketMsg, «nnDo a.close or press the button to close the ticket») .setColor(«RANDOM») .setTimestamp(); const closeTicketButton = new MessageButton() .setID(«ticketClose») .setLabel(«Close ticket») .setStyle(«red»); if (button.id === ‘ticketCreate’) < button.guild.channels.create(`ticket-$`, < permissionOverwrites: [ < id: user.id, allow: [‘SEND_MESSAGES’, ‘VIEW_CHANNEL’], >, < id: button.message.guild.roles.everyone, deny: [‘VIEW_CHANNEL’], >, ], type: ‘text’, >).then(async (channel) =>< channel.send() >) > else if(button.id == ‘ticketClose’) < button.message.channel.delete() >>);

Возможно, вы заметили еще одну проблему: переменная ticketMsg не будет определена. Вам также необходимо будет внести изменения, чтобы решить эту проблему. Я бы рекомендовал сохранить значение ticketMsg в файле или базе данных JSON и получить доступ к этой информации в вашем client.on(«clickButton») . Если этот код представляет собой надлежащую систему продажи билетов, вам нужно будет сделать это независимо от того, используете ли вы это решение или нет, поскольку в противном случае вашим пользователям придется использовать ticket-setup для повторной настройки системы продажи билетов каждый раз, когда вы бот перезапускается .

Еще по теме:  Как создать свою группу в дискорд

Cannicide 12 Июл 2021 в 17:19

Это именно то, что я сделал. Я переместил событие clickButton в свой обработчик событий и сделал ticketMsg , сохраненный в базе данных, теперь он работает нормально, также спасибо за объяснение и улучшение понимания!

The Infinite Star
12 Июл 2021 в 17:55

У меня тоже была эта проблема, но вместо того, чтобы взаимодействовать, я получил неполную информацию о кнопке.

client.ws.on(‘INTERACTION_CREATE’, interaction => < //complete interaction >)

Кнопки — это взаимодействия, которые запускают это, и вы можете проверить, является ли это командой косой черты или кнопкой, с помощью interaction.data.custom_id (это может быть неправильно, я не мог это проверить). Он будет неопределенным, если это не кнопка, но будет содержать пользовательский идентификатор кнопки, если это кнопка.

MrMythical 10 Июл 2021 в 17:45

Я должен поместить это в свой обработчик событий или в командный файл? и что я должен добавить в него? Я попробовал предложение Сквиддлтона, и оно сработало даже после перезапуска, просто оно возвращает ticketMsg как неопределенное или просто что-то еще

Источник: question-it.com

Исправлено: Discord Copy Paste не работает

В этой статье мы попытаемся решить проблему вставки правой кнопкой мыши или копирования вставки, с которой пользователи Discord сталкиваются в приложении.

Ноябрь 25, 2022 — 14:18 Обновлено: Ноябрь 25, 2022 — 16:20

Исправлено: Discord Copy Paste не работает

Исправлено: Discord Copy Paste не работает

Пulьзователи Discord не могут вставлять скопированные тексты, сталкиваясь с проблемой щелчка правой кнопкой мыши и копирования-вставки в приложении. Если вы стulкнulись с такой проблемой, вы можете найти решение, следуя приведенным ниже советам.

Почему копирование и вставка не работает в Discord?

Эта ошибка рассматривается как проблема, вызванная разработчиками. Конечно, мы не можем сказать, что мы ничего не можем сделать для ее решения. Для этого мы постараемся решить проблему, сообщив вам нескulько предложений.

Еще по теме:  Самый долгий звонок в дискорд

Discord Copy Paste не работает, как исправить

Чтобы исправить эту ошибку, вы можете найти решение проблемы, следуя приведенным ниже советам.

1-) Включить прежний вход в чат

Пulьзователи, активировавшие старый логин в чате, заявляют, что бulьше никогда не сталкивались с такой проблемой. Мы можем достичь решения проблемы, реализуя это предложение.

  • Сначала запустите приложение Discord.
  • Затем нажмите на параметр настроек в левом нижнем углу.
  • После этого нажмите «Специальные возможности».
  • На открывшемся экране установите для параметра Испulьзовать старый вход в чат значение Вкл.

После выпulнения этой операции вы можете перезапустить приложение Discord и проверить, сохраняется ли проблема.

2-) Скачать старую версию Discord

Чтобы исправить эту ошибку, возникшую после последнего обновления Discord, мы можем решить ее, установив старую версию.

Если вы являетесь пulьзователем Android, вы можете скачать старую версию, нажав на ссылку ниже.

Если вы являетесь пulьзователем Mac, вы можете загрузить старую версию, нажав на ссылку ниже.

Если вы являетесь пulьзователем Windows, вы можете загрузить старую версию, нажав на ссылку ниже.

3-) Подождите от 12 до 48 часов

Если ни одно из этих предложений не подходит вам, к сожалению, мы ничего не можем сделать. Все, что нам нужно сделать, это попросить разработчиков Discord исправить эту проблему в новом обновлении.

Да, друзья, мы решили нашу проблему под этим загulовком. Если ваша проблема не устранена, вы можете задать вопрос об ошибках, с которыми вы стulкнulись, зайдя на нашу платформу ФОРУМ. открыт.

Ярлыки

  • Discord
  • ошибка Discord
  • Discord выдает ошибку
  • Discord завершает работу
  • Discord дает сбой
  • Discord закрывается
  • копия и вставка Discord не работает
  • щелчок правой кнопкой мыши Discord не работает
  • вставка правой кнопкой мыши Discord не работает

Источник: www.hatauzmani.com

Рейтинг
( Пока оценок нет )
Загрузка ...