Задать вопрос
  • Можно ли пользователю в группе в телеграмм поставить время и дни на просмотр сообщения?

    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 не просто можно, но и нужно). Но придётся собирать массив вручную с нуля и всё на него копировать.
  • Почему функция возвращает None?

    shurshur
    @shurshur
    Onigire, ещё один способ выйти из функции - это когда её исполнение доходит до последней строчки функции. Если там не будет сделан return какого-то значения, то функция вернёт None.
  • Почему функция возвращает None?

    shurshur
    @shurshur
    Onigire, если условие всегда выполняется, что оно делает в коде? Разумеется, оно выполняется не всегда, цикл завершается и функция доходит до конца, где нет return.
  • Можно ли в теории запустить тг бота через сервера дискорда?

    shurshur
    @shurshur
    Zura_aps, если есть желание заниматься этой темой, рано или поздно придётся завести себе хоть какой-то хостинг. И это не такие огромные деньги, на пиво с фисташками больше уходит.
  • Как можно улучшить код отображения даты выпуска новости?

    shurshur
    @shurshur
    ThunderCat, а когда захочется тем же кодом поддерживать узбеков, финнов и каталанцев, то сразу же станет понятно, насколько неудобны рукодельные реализации для решения такиз задач.
  • Как исправить ошибку No module?

    shurshur
    @shurshur
    Mr.Robot, теперь

    current_dir = /home/user/python/flaskr/web/live
    dirname(current_dir) = /home/user/python/flaskr/web

    Нужно ещё один раз на уровень выше взять и получится как надо.