• Почему Бот выдаёт ошибку, но в консоли она не отображается (disnake.py)?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Сообщение "Приложение не отвечает" говорит о том, что твой бот за 3 секунды не выдал какой-либо ответ.
    Оно не означает что в коде есть ошибки.

    Они там определенно есть, но другого характера. Ваш код выдает ответ не в любом случае, а только при выполнении ряда условий, причем настолько специфичных, что можно было сразу на фазы луны завязываться, было бы надежнее. Для начала постарайтесь не пытаться выдать ответ посреди цикла, а для веток if добавлять else. К примеру сейчас если не выполняется if counter==4: не произойдет ничего.

    А лучше отложите бота и перечитайте теорию с самого начала.
    Ответ написан
    1 комментарий
  • Почему не скачивается русский пакет для Stanza?

    fenrir1121
    @fenrir1121
    Начни с документации
    stanza качает ресурсы с гитхаба и хаггингфейса, они пока не заблокированы.
    Похоже на работу oom killer'а. Убедись что у тебя память не забита.
    Ответ написан
    Комментировать
  • Как удалить КОНКРЕТНОЕ сообщение в дискорде?

    fenrir1121
    @fenrir1121
    Начни с документации
    Сообщение на которое вы отвечаете лежит в атрибуте Message.reference.
    Для него необходимо вызвать Message.delete.
    Ответ написан
    8 комментариев
  • Активация выполнение команды на нескольких серверах возможно ли Discord JS?

    fenrir1121
    @fenrir1121
    Начни с документации
    Вы не можете забанить человека, если его нет на данный момент на сервере.
    Но можете хранить id всех забаненых и банить их если они когда-либо туда зайдут по событию входа на сервер.

    Однако я бы такое делал только в том случае, если вам принадлежат все сервера, где расположен бот.
    Ответ написан
  • Ошибка при установки discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Ошибка при установки discord.py?
    да ошибка, попробуйте переводчик

    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-buil...
    Ответ написан
    1 комментарий
  • Как убрать из телеграма истории?

    fenrir1121
    @fenrir1121
    Начни с документации
    Использовать альтернативные клиенты.
    В plus есть такая настройка
    Ответ написан
    Комментировать
  • Бот после изменения файла эксель использует старую версию до перезапуска. Как исправить?

    fenrir1121
    @fenrir1121
    Начни с документации
    Читать файл не при старте приложения, а в нужной функции.

    Но лучше слезть заранее с этого велосипеда с квадратными колесами и использовать БД. В случае двух и более одновременных запросов результаты будут не те что вам хотелось бы.
    Ответ написан
    2 комментария
  • Как решить проблему с объектом который не имеет атрибута 'send_modal'?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    1) Узнайте что такое self, является ли это ключевым словом или просто переменной и что туда передается, где обычно пишут self.

    2) Узнайте в чем отличие класса от экземпляра класса. Подумайте над 8 строчкой, должен ли туда передаваться класс или его экземпляр.

    3) Узнайте что такое ctx, чем отличается Context от Interation. Тот же вопрос другим боком: чем отличаются команды от слеш-команд.

    4) Определитесь вам нужен send_model или send_modal (перечитайте заголовок вопроса и сам вопрос и исправьте)

    5) Когда разберетесь с вопросом 4, нужный метод доступен для класса InteractionMessage. Найдите его среди ваших объектов, используя функцию type(some_object)
    Ответ написан
    Комментировать
  • Что делать, если Не появляются slash команды?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    В guld_id значение должно быть меньше или равно 9223372036854775807

    Ошибка происходит внутри кода библиотеки и связана с тем, что передается слишком большое значение id сервера.

    Или вы где-нибудь в конфиге или бд прописали слишком большой id. Их мы не видим так что ищите.
    Или это баг в самой библиотеке и в этом случае открывайте issue на github'e
    Ответ написан
    Комментировать
  • Как сделать чтобы бот выдавал обратную связь если была ошибка со стороны пользователя, В чём была моя ошибка при коде?

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

    Ну и не нужно дергать вызов ошибок в событии предназначенном для их обработки.
    async def on_command_error(error, ctx):
        if isinstance(error, commands.BadArgument):
            await ctx.send("Запрос команды с ошибочным аргументом")
        elif isinstance(error, commands.CommandNotFound):
            await Client.send_message(ctx.message.channel, "Команда не найдена")
        ... # вставлять новые проверки сюда
        else:
            await Client.send_message(ctx.message.channel, "Неизвестная ошибка")
    Ответ написан
    Комментировать
  • Как исправить ошибку PEP 8: W605 invalid escape sequence на Python?

    fenrir1121
    @fenrir1121
    Начни с документации
    Бэкслеш используется для вставки спецсимволов. Если вам нужно использовать его в строке нужно или использовать двойной бэкслеш "\\" или сырую строку r"..."

    docs string-and-bytes-literals
    Ответ написан
    1 комментарий
  • Как сделать чтобы кнопка работала даже после перезапуска бота?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    При старте бота в событии on_ready нужно регистрировать обработчик.
    Официальный пример с комментариями.
    Ответ написан
    1 комментарий
  • Бот не высвечивает кто пригласил, как исправить?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Потому что при result is None and chann is not None inviter_id будет None.
    inviter_id = None
    if result is not None:
       ... 
    
    if chann:
        embed = nextcord.Embed(
            title='Leafy InviteLogger',
            description=f'{member.mention} join the server!\n\n Invited by <@{inviter_id}>\n Total invitations {total_invites}',
            colour=0x2b2d31
        )


    P.S. Отредактируйте вопрос в соответствии с правилами ресурса. Используйте спойлер для портянок и изображений.
    Ответ написан
  • Что делать ошибка после возрата?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Переводим ошибку
    coroutine 'ApplicationContext.respond' was never awaited

    Смотрим на строку, которая эту ошибку вызывает
    ctx.respond(f'Вы уже использовали {us} из {kyp}',ephemeral=True)

    Сравниваем с вашим же кодом на 10 строк нижe
    await ctx.respond(embed=embedvar,ephemeral=True)
    Играем в игру "найди одно ключевое отличие", добавляем в код await

    С учетом того, что у библиотеки discord.py нет объектов ApplicationContext, похоже код использует какой-то форк и такие вещи стоит указывать.
    Ответ написан
    Комментировать
  • Как вызвать одну функцию из другой в discord боте?

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

    Есть две команды
    В приложенном коде только одна команда search, а ask просто функция.

    # Создаем контекст для выполнения команды /search с вопросом пользователя
    ctx = await bot.get_context(channel.message)
    ctx.message.content = f"/search {question}"

    Зачем вы пытаетесь отправить сообщение и самому на него отреагировать?
    Почему вы пытаетесь использовать слеш в команде с префиксом?

    По ощущениям код на 80% написан кодогенератором и пишется без понимания что он вообще делает.
    Ответ написан
  • Guild.members не возвращает список всех участников сервера. Что делать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вам не дадут всех участников всех серверов. А если вы расчитываете когда-то получить верификацию, учитывайте что вам могут вообще не дать смотреть участников.
    650aa23f17855437585678.png
    1. Никогда не пишите в БД в on_ready. Вы миллион раз будете запускать бота и он миллион раз будет писать миллион пользователей
    2. Не храните пустых пользователей. 99% участников серверов не воспользуются вашим ботом никогда, зачем вы их храните?
    3. Добавляйте запись когда в ней есть необходимость, используйте INSERT ... ON CONFLICT ... UPDATE
    Ответ написан
    Комментировать
  • Можно ли в Python сделать такой механизм, чтобы при изменении значения в любой ветки словаря, я был уведомлен?

    fenrir1121
    @fenrir1121
    Начни с документации
    Наследование от dict повлечет за собой неявные ошибки, используйте предназначенный для этого collections.UserDict
    from collections import UserDict
    class MyDict(UserDict):
        def __setitem__(self, key, value):
            print(f'Меняем значение {key} на {value}')
            super().__setitem__(key, value)


    Мне нужно чтобы при изменении любого значения словаря, в том числе значения словаря по ключу 'z', выполнялся определенный код.

    Очевидно вам это нужно для ваших конкретных словарей с бизнес логикой. И это нормально что они будут отдельным классом. Питон под капотом тоже использует словари и там явно не должен выполняться ваш код.
    Ответ написан
    Комментировать
  • Существует ли аналог Proxy и Reflect (как в JS) для Python?

    fenrir1121
    @fenrir1121
    Начни с документации
    @property переопределяет доступ к атрибутам и логику чтения, записи и удаления.
    Ответ написан
    Комментировать
  • Как убрать строку между name и value в embed.add_field - disnake.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Никак.
    Name и Value всегда на разные строках так же как Title и Description.
    Если текст должен быть в одной строке просто положите его в одно поле.

    P.S. поправьте текст вопроса.
    Ответ написан
    Комментировать
  • Не работает on_member_join Как исправить?

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

    on_member_join работает, не работает ваш код. Вероятно channel is None, поскольку этой ветки у вас нет вам об этом и не сообщается.

    1. Поправьте вопрос как описано в сообщении модератора

    2. Проверяйте типы объектов, которыми оперируете и делайте все возможные ветвления, если код работает не как ожидается.

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

    4. Для приветственных сообщений есть системный канал, который рекомендуется под это использовать.
    Хардкод это плохая практика.

    import discord
    
    class MyClient(discord.Client):
        async def on_member_join(self, member):
            guild = member.guild
            if guild.system_channel is not None:
                msg = f'{member.mention} добро пожаловать на сервер {guild.name}!'
                await guild.system_channel.send(msg)
    
    
    intents = discord.Intents.default()
    intents.members = True
    
    client = MyClient(intents=intents)
    client.run('token')
    Ответ написан
    Комментировать