FlegYy, значит берёшь и начинаешь проверять каждый шаг потому что в коде причин чтобы он вообще не работал нет.
Смотришь:
- Что-то функция вызывается потому что ты накосячил со слешами
- что есть права в нужный канал
- что есть права ставить эмодзи
Затем делаешь пошаговую отладку.
1. Удали токен и дублирующий код
2. Что значит код рабочий, но не работает? Как вы это определили?
3. Интенты выданы на портале для разработчиков?
4. Не надо делать слеш префиксом для команд
5. Вы в курсе, что reaction_channels будет сбрасываться при каждом перезапуске бота?
Михаил Р., в данном случае упор на то, что это контора где есть офф поддержка, которая сидит и решает проблемы с продуктом. И у них стоит уточнять куда пишутся логи и что не так с версией ТСа.
Не пользовался ни Pro версией ни community, но судя по отсутствию разделения при запросе в саппорт, вероятно это один и тот же софт с разблокируемыми функциями
Как вы пытались сделать чтобы он работал? Где код?
Для выполнения нужно прочитать документацию как создать кнопки, как обработать нажатия, как получить пользователя и как добавить ему роль.
Если вы хотите готовый код, такие услуги оказывают на фрилансе, а здесь помогают исправить ваш код, который почему-то не работает.
Ну смотрите. Я не могу вам дать ответ, потому что не понимаю зачем вы пытаетесь это сделать. Интерфейс словаря исходит из того, что он хранит ссылки на объекты, а не сами объекты. Создавая объект который работает как словарь, но произвольно перестающий это делать вы нарушаете правило наименьшего удивления.
Если вы боитесь потерять данные можно отнаследоваться от collections.UserDict и например периодически выгружает данные в json.
Но если это не учебная задачка, а вы хотите с этим реально работать, кажется вы пытаетесь изобрести документоориентированную СУБД и возможно лучше не изобретать велосипед.
Grondaro, выключение элементарно в энидеске.
Включение дешевле всего реализовать манипулятором типа "Homo sapiens" путем соприкосновения подвижных частей с кнопкой включения.
Либо использовать спящий режим, тогда уже сойдут программные решения.
Vindicar, расшифрую свой ответ. Префикс в коде не показан, поэтому нужна череда логических заключений:
- В коде показаны две команды, одна из них обычная.
- Слеш команду невозможно набрать неправильно. У них другие условия активации, если кратко она либо автозаполнится, либо ничего не будет вызвано
- Ошибка disnake.ext.commands.errors.CommandNotFound может сработать только для обычной команды
Из этого следует что кто-то попытался вызвать команду думая что она слешевая, а она оказалась префиксной => префикс слеш.
Собственно чтобы не было такой путаницы и проблем и не стоит делать такой префикс.
Shookal, проблема хранения в БД адресов сообщений в том, что нет гарантий что есть доступы и не стерлись нужные сообщения. Либо храните в БД сразу всю нужную информацию, чтобы не было рисков, что нужное сообщение удалено или недоступно, либо предоставляйте управление "на месте"
Shookal, если вы делаете ответ через response, то original_message позволяет получить сообщение на которое вы отвечали.
В коде выше вы используете send, это самостоятельное сообщение, для которого нет никакого прошлого сообщения. Единственным вариантов в этом случае остается хранить в БД информацию откуда там пришел пользователь.
Без БД нужно отказаться от личных сообщений и использовать response. Выдаете на месте пользователю эфемерный ответ с нужной информацией и кнопками.
Shookal, и это совершенно другая проблема.
Вот обсуждение, где о ней идет речь. Чтобы сработало original_message(), вначале должен быть вызов response().
Не знаю что вы пытаетесь сделать, но лучше описывайте задачу, которую вы пытаетесь решать, а не то, что не работает. Так больше шансов, что получите решение.
Смотришь:
- Что-то функция вызывается потому что ты накосячил со слешами
- что есть права в нужный канал
- что есть права ставить эмодзи
Затем делаешь пошаговую отладку.