Задать вопрос
  • Почему APP не подключается к контейнеру с Postgres?

    shurshur
    @shurshur
    Alexej Belkin, что такое command: mkdir db и зачем в этом файле? Скорее всего, контейнер сразу же завершается, потому и недоступен.
  • Есть ли веб-софт для редактирования env переменных?

    shurshur
    @shurshur
    Если в этом файле лежат переменные окружения, то бесполезно их менять, потому что они не повлияют на текущие запущенные процессы.

    Это обычно делается по-другому. Переменные передаются в контейнер (например, через env_file, тот же docker-compose это позволяет), а в случае необходимости контейнер перезапускаем для учёта новых значений.

    Если надо прям в реальном времени, то следует искать другие пути. Например, можно параметры хранить в базе. Или в приложении сделать API-сервис для их изменений. Тут большой простор для ранообразных решений.
  • Как задать переменную в sql запросе?

    shurshur
    @shurshur
    GGHotDog, НИКОГДА не надо привыкать писать неправильно. Может, именно тут ничего не случится, но через год пользователь так и будет писать неправильно, рано или поздно устроив себе проблемы на пустом месте.
  • Как исправить AttributeError: 'NoneType' object has no attribute 'pop'?

    shurshur
    @shurshur
    Алан Гибизов, "Лучше день потерять, зато потом за пять минут долететь!"
  • Как избавиться от ошибки role required argument?

    shurshur
    @shurshur
    Не надо при каждой команде создавать роль. Она же создаётся один раз, можно вообще было создать её вручную, а дальше надо только добавлять.

    Также идём в документацию и читаем, какие параметры надо передавать в метод disnake.Member.add_roles.
  • Можно ли пользователю в группе в телеграмм поставить время и дни на просмотр сообщения?

    shurshur
    @shurshur
    По-моему, проще для двух разных смен сделать разные чаты. Также можно обе смены включить в оба чата, но каждый сотрудник может принудительно выключить оповещения для чата не своей смены, чтобы, с одной стороны, ему был доступ к всей истории, а с другой, ему бы в нерабочее время ничего не сыпалось.
  • Как называется специальная ячейка памяти в pytelegrambotapi?

    shurshur
    @shurshur
    utsiye, возможно кстати, что это было не свойством самого, а особенностью конкретной реализации.

    Примерно так:

    def некий_обработчик(message):
        ...
        bot.register_next_step_handler(следующий_обработчик, message)
    
    def следующий_обработчик(message, previous_message):
        # тут message это новое сообщение, previous_message - предыдущее


    Можно вообще накапливать на каждом шаге диалога с пользователем сообщения в список и каждый раз передавать его в следующий обработчик. Не особо хорошее решение, но для некоторых задач и так сойдёт.
  • Telegram Bot API. Keyboard не работает в группах с темами?

    shurshur
    @shurshur
    PigData, я бы предложил не закладываться на такой скользкий способ псевдоличного взаимодействия. Вон уже на примере включения тредов в группе видно, что это ненадёжный подход, который легко сломается, и это, вероятно, даже не будут дорабатывать вообще никогда.
  • Как называется специальная ячейка памяти в pytelegrambotapi?

    shurshur
    @shurshur
    utsiye, нет, телебот реализует лишь то, что предлагает API Телеграма. Там может быть какая-то информация о цитируемом сообщении, но и только. Никакой другой информации о прошлых сообщениях из API получить нельзя.
  • Как настроить Django и Aiogram бот?

    shurshur
    @shurshur
    Для начала, использовать асинхронного бота (aiogram) с синхронным фреймворком (django) крайне неудобно.

    Для telebot это можно сделать примерно так (не тестировал, просто обшая иллюстрация):

    from django.views.decorators.csrf import csrf_exempt
    
    bot = telebot.TeleBot(bot_token)
    
    @csrf_exempt
    def bot_webhook(request):
        json_string = request.read().decode()
        update = telebot.types.Update.de_json(json_string)
        bot.process_new_updates([update])


    Вообще, я бы предложил разделить бота и сайт на отдельные скрипты. Обмен между ними можно сделать разными способами. Например, через использование общей базы. Другой вариант - сделать в django-сайте внутренний API-сервис для предоставления боту нужных функций. Или наоборот, в боте сделать API, по которому сайт будет его дёргать.
  • Почему Id Телеграм бота не отвечает?

    shurshur
    @shurshur
    RTYus, тогда content_types=['text'], а что за тип контента 'Token' я даже и не знаю.
  • Как сделать так чтобы on_raw_reaction_add не реагировало на бота?

    shurshur
    @shurshur
    Имеет смысл не хардкодить id бота в коде, а сравнивать с имеющимся объектом бота. Можно также фильтровать сообщения от любых ботов:

    if message.author == bot.user:
            return
    
        if message.author.bot:
            return
  • Как называется специальная ячейка памяти в pytelegrambotapi?

    shurshur
    @shurshur
    utsiye, может, речь про использовании базы данных? В Телеботе нет других собственных механизмов многошагового поведения, кроме register_next_step_handler.
  • Telegram Bot API. Keyboard не работает в группах с темами?

    shurshur
    @shurshur
    PigData, честно говоря, не очень понятно, зачем реализовывать индивидуальное взаимодействие в группе.

    Для группы я бы наверное сделал inline-кнопки и попробовал понять как использовать webapp в Телеграме (всё руки не доходят посмотреть что это такое и как работает). Всё же другим пользователям тоже может быть интересно посмотреть ту же инфу, а использование inline-кнопок позволяет не засорять их строку чата кнопками.
  • Разработка ботов & backend. Какой ЯП выбрать?

    shurshur
    @shurshur
    Rust - это язык, на котором очень трудно что-либо написать, если не проникнешься его Особым Духом. Поэтому выбирать его в качестве первого языка вряд ли хороший выбор.

    Ботов для Discord пишут практически исключительно или на js (discord.js), или на python (discord.py и его клон disnake), причём именно python лидирует в массовом сегменте. Да, на некоторых других языках писать тоже можно, но это уже означает присоединиться к касте меньшинств с соответствующими проблемами и сложностями такого выбора.

    Можно также отметить, что у js есть более типизированное расширение языка TypeScript. В python есть type hinting, который не вызывает реальной (заградительной) проверки типов.

    В пользу js так же говорит то, что можно на одном и том же языке писать код и на фронте, и на бэке (node.js). С другой стороны, node.js имеет свои проблемы, в частности, довольно печальная практика безумного количества зависимостей в npm у многих библиотек.

    В пользу python - это язык более общего назначения, для него есть очень много библиотек, решающих самые разные задачи. В частности, язык популярен в Data Science, ML, AI, у аналитиков, учёных, админов.

    С точки зрения уже имеющегося знакомства с C++ можно обратить внимание на C# и .Net Core. Наверное, он типизированный, как C++, но я в этом не разбираюсь. Там есть библиотека Discord.Net.

    Мне непонятна боязнь динамической типизации. Это на самом деле не страшно. От себя я бы рекомендовал python.
  • Telegram Bot API. Keyboard не работает в группах с темами?

    shurshur
    @shurshur
    PigData, возможно это просто и не будет работать. Что не лишено логики: смысл непонятен показывать сотням пользователей одинаковые кнопки.
  • При роботе с библиотекой colorama(0.4.6) не изменяеться цвет текста?

    shurshur
    @shurshur
    Liker_mob, на будущее расскажу немного теории. В большинстве классических терминалов используются так называемые ESC-последовательности (Escape-последовательности), которые могут распознаваться терминалом и не выводиться в чистом виде. ESC-последовательности начинаются на служебный символ ESC с кодом 27 (0x1b). Есть и другие управляющие символы, они нас сейчас не волнуют.

    Много интересного по поводу таких кодов написано в man console_codes

    В частности, есть конструкция вида ESC[код;код;кодm, которая задаёт цвет символов и фона. Например, 31 - красный цвет, 44 - синий фон, 1 - яркий цвет.

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

    Если терминал не поддерживает ESC-последовательности, то он либо игнорирует символ ESC (как и большинство кодов от 0 до 31), либо рисует его корявым символом (в частности, под DOS - символом "стрелочка влево"). Поэтому Fore.RED превращается в [31m - это всё, что осталось от ESC[31m, кодовой последовательности, задающей красный текст (хотя вон на скриншоте я вижу, что ESC никуда не пропал и рисуется прямоугольничком).
  • Telegram Bot API. Keyboard не работает в группах с темами?

    shurshur
    @shurshur
    Предполагаю, что эти кнопки будут работать только в "классическом" треде группы (тот, куда после этого идут сообшения старых клиентов, а также всякие вступления в группу). Но это надо проверять и уточнять.
  • Как организовать дисковое простраснтво для сервера на 10 человек?

    shurshur
    @shurshur
    В целом zfs работает в Linux довольно хорошо, несмотря на лицензионную несовместимость с ядром и необходимость его подключать через DKMS. В zfs есть и нативные средства для кэширования на SSD, можно отказаться от bcache (и в случае zfs не просто можно, но и нужно). Но придётся собирать массив вручную с нуля и всё на него копировать.