Ответы пользователя по тегу discord.py
  • Что делать если бот перезагружается сам по себе?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    on_ready

    This function is not guaranteed to be the first event called. Likewise, this function is not guaranteed to only be called once. This library implements reconnection logic and thus will end up calling this event whenever a RESUME request fails.


    Либо у вас плохой интернет, либо у вас запуск в цикле и вы глушите ошибки.
    В любом случае настраивайте нормальное логирование.
    Ответ написан
    Комментировать
  • Не работают команды Discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Глядя на этот код возникает слишком много вопросов. Начните с основ питона прежде чем браться за ботов, а после ознакомьтесь с официальной документацией и примерами, чтобы не изобретать такое количество костылей.
    По теме вопроса вот документация почему не работают команды.
    Вот официальный пример базового бота.

    Если освоите поиск, найдете еще тем 5-10 за последние пол года с тем же вопросом.
    Ответ написан
    Комментировать
  • Как в Pycharm Community Edition исправить Unresolved attribute reference или Cannot find reference в сторонних библиотеках?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Это ошибка встроенного тайпчекера пайчарма. У нескольких других людей сталкивался с тем же предупреждением для dpy. В виме и вскоде все определяется корректно.

    Решается глушением ошибки или явным указанием типа у респонза. Менять ide из-за одного ложного предупреждения можно, но это странно.
    Ответ написан
    1 комментарий
  • Как поставить дискорд бота на питоне на бесплатный хостинг?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Как поставить дискорд бота на питоне на бесплатный хостинг?
    Так же как на платный

    Посоветуйте бесплатные хостинги для дискорд бота на питоне
    Твой ПК

    Никому не интересно предоставлять мощности за "спасибо", времена, когда сервисы были готовы работать в минус ради набивания клиентов прошли. Хотите получить услугу - заплатите за нее.
    Ответ написан
    Комментировать
  • Бот заходит в войс, но звука музыки нету, что делать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вам еще в прошлом вопросе указали, что discordsuperutils это сомнительного качества заброшенная библиотека.

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

    Отказывайтесь от нее и переписывайте. Все равно придется.
    Ответ написан
    5 комментариев
  • Как я могу выдать роль по кнопке через ЛС?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Сейчас вы используете interaction.send для отправки. Переводя на русский смысл данной команды "отправь в канал взаимодействия"

    Если вы хотите отправить пользователю, первым шагом вы идете в документацию и находите объект User, вторым шагом смотрите доступные ему методы и находите знакомый метод send. Переводите описание метода и понимаете, что он вам подходит. Объект пользователя у вас уже в коде есть. В случае возникновения новых проблем повторить шаг 1.

    Это было по теме вопроса, но раз вы изучаете недавно вам еще домашнее задание подумать и ответить "а почему так никто не делает"
    Ответ написан
    Комментировать
  • Как сделать разный баланс на разных серверах в Discord?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
  • Как получить id канала по сообщению в disnake?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    У дискорда есть два вида команд: устаревшие префиксные получают контекст, слеши получают взаимодействие. В обоих случаях есть атрибут channel ничего извлекать из сообщений не нужно.
    Ответ написан
    Комментировать
  • Как сделать команду блока?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Во-первых нужно где-то хранить этих пользователей. В идеале в БД, но т.к список будет обновляться редко хотя бы в json или yaml файле, на основании которого будет проверяться каждый пользователь.

    Далее при вызове любой команды должна осуществляться проверка есть ли пользователь в этом черном списке.
    Для этого есть два пути:
    1) На все команды можно навешивать произвольные проверки, используя commands.checks. Способ требует больше действий, но тоньше настраивается (тем же способом можно добавлять премиум команды, команды для администраторов и т д)

    2) Если бан распространяется на вообще все команды ту же проверку можно осуществлять в событиях on_message, если бот сделан на префикс командах или в on_interaction, если на слешах. Это избавит от необходимости прописывать проверку к каждой команде.

    Пример первого варианта можно посмотреть в шаблоне Криптона: сама проверка, команда блока ban.
    Ответ написан
    Комментировать
  • Почему бот не отправляет сообщение в определенный канал?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Функция add_experience нигде не вызывается.
    Соответственно опыт не начисляется, соответственно уровни не выдаются.

    Ставьте принты или дебажте, смотрите какие функции у вас вообще вызываются.

    Так же соблюдайте правила ресурса, публикуйте код в спойлере и присылайте код, который относится к вопросу, а не гигантскую портянку со всем подряд.
    Ответ написан
    Комментировать
  • Как сделать применение кнопок и выпадающего списка к одному сообщению на disnake.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Так же как по отдельности.

    Помимо декоратора @button, никто не запрещает их передавать в View как компоненты
    components=[
                disnake.ui.Button(label="Yes", style=disnake.ButtonStyle.success, custom_id="yes"),
                disnake.ui.Button(label="No", style=disnake.ButtonStyle.danger, custom_id="no"),
            ],


    Открывайте примеры и документацию.

    Что до ошибки по строчке view = DropdownView(), EditStatus() видно, что вы пытаетесь передать кортеж в inter.send() вместо disnake.ui.View, о чем вам явно указано в ошибке.

    На будущее прикладывайте полные логи, а изображения и портянку кода убирайте в спойлер.
    Ответ написан
    Комментировать
  • Как сделать удаление "начинает ветку"?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    При создании ветки (они зовутся Thread's) вызывается событие on_thread_create. В нем прописываете свою логику.

    Ценность подобной логики мне не понятна, ведь удаление сообщения не удаляет тред, поэтому рекомендую еще посмотреть методы объекта Thread
    Ответ написан
  • Не могу подключиться к голосовому каналу discord.py. В чём проблема?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Проблема в том, что это невалидный код, который вероятнее всего писал chatGPT.
    Исправлять такой код помогают тут
    Ответ написан
    Комментировать
  • Почему у меня ошибка discord.ui?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    In components.0.components.0.emoji.name: Invalid emoji

    Как сказано в сообщении потому что нет такого эмодзи.
    Стандартные эмодзи передаются юникод-символом (можно взять например тут), кастомные строкой в формате <name:id>
    Ответ написан
    1 комментарий
  • Как сделать так чтобы мой бот работал только на моём сервере?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Достаточно просто не публиковать ссылку-приглашение.
    Но если нужно именно решение кодом проверяйте сервер в on_message
    Ответ написан
    Комментировать
  • Почему не работает лимит?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Потому что нет никакого лимита.
    Поставь принт с каким-нибудь текстом первой строчкой каждой функции и убедись что вызывается всегда только одна из трёх функций. Почему так оставлю тебе на подумать.

    В официальной документации есть примеры работы с кнопками, ссылку на документацию я давал в прошлом твоём вопросе. Учись по документации, а не каким-то устаревшим гайдам из которых ты это взял.
    Ответ написан
    Комментировать
  • Как сделать запрос текста disnake?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Буквально весь смысл ботов, брать какой-то запрос пользователя, класть его в переменные и что-нибудь с ним делать. В примере ниже number запрашивается у пользователя
    @bot.slash_command(description=Умножить число на 42")
    async def multiply(inter, number: int):
        await inter.response.send_message(number * 42)
    Ответ написан
  • Как исправить ошибку TypeError: DataBase.get_max_cash() missing 1 required positional argument: 'cash'?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Научиться пользоваться переводчиком.
    Вот объявление Вашей функции:
    async def get_max_cash(self, ctx, cash, *, all_data: bool=False):


    Вот как вы пытаетесь ее вызвать:
    data = await self.db.get_max_cash(cash)

    Если глядя на последнюю строчку и текст ошибки не приходит никаких идей, попробуйте начать с учебника для начинающих.
    Ответ написан
    Комментировать
  • Как лучше сделать одобрение/отклонение заявок через pycord (discord.py)?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Потому что Bot.wait_for это гигантский костыль. С тех пор как появились взаимодействия его не следует использовать в принципе. В вашем случае у вас все открытые заявки ждут события raw_reaction_add, а check не проверяет на каком сообщении реакция поставлена.
    Путей исправления 3:

    1 (оптимальный). Разобраться как работают события. В идеале создавать сообщение с 2 кнопками, которые хранят данные от кого они были созданы.

    2 (простой). Не использовать события. Создать отдельную команду для подтверждения, куда передается пользователь и статус.

    3 (кривой). Оставить все как есть. В сообщении наверняка есть строка от кого оно. Парсить текст сообщения, добавить в check проверку по конкретному пользователю.
    Ответ написан
    Комментировать
  • Как исправить ошибку с командой work?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Сделать дебаг или принтами посмотреть тип и значение всех переменных в процессе выполнения функции.
    За вас это никто не сделает, весь код состоит из ваших функций, код которых вы не предоставили.

    Отсутствие и ответа и ошибки говорит только о том, что вы заглушаете ошибки.
    Ответ написан
    Комментировать