Задать вопрос
  • Почему не отправляется фото в телеграмм боте?

    if message.text.lower() == 'Hentai':
    ....
    elif message.text.lower() == 'Мама рядом':

    У тебя ни один if не даёт True ни при каких условиях...
    Почитай что делает str.lower()

    Замени 'Hentai' на 'hentai' и 'Мама рядом' на 'мама рядом'
    Ответ написан
    1 комментарий
  • Как исправить баг при х2 нажатии на INLINE кнопку в pyTelegramBotAPI?

    Храни время последнего обращения пользователя и игнорируй сообщения от этого пользователя если разница между прошлым и текущим запросами меньше заданного лимита, например 2-3 секунды. Про pyTelegramBotAPI не знаю, а например у aiogram это можно сделать на уровне middleware простым декоратором. Можешь там подсмотреть как это работает - ThrottlingMiddleware
    Ответ написан
    Комментировать
  • Защита от спама Телеграм бота?

    Если проблема в том что бот отсылает на api телеграмма больше 30 обращений в секунду:
    Храни время последнего обращения пользователя и при новом обращении проверяй разницу между текущим временем и временем последнего обращения, если она меньше лимита то просто игнорируй данное сообщение.
    Пример реализации антифлуда через декоратор можно подсмотреть у aiogram
    Так же подобная ошибка бывает при быстром снятии-постановки вебхука, когда вы по совету какого нить гайда при каждом запуске бота заново вешаете вебхук а перед этим снимаете его на всякий случай. Если так то между этими действиями надо поставить задержку.
    Ответ написан
    Комментировать
  • Как принять POST запрос в python?

    Зачем при наличие сервера запускать лонг поллинг, прочитай про вебхуки в телеграмме, аиограм умеет работать и на них. То есть телеграм тебе будет слать такие же пост запросы как и платёжка. Всё что тебе нужно это один сервер, на один роут принимаешь хуки от телеграмма, на другой хуки от платёжки. Если пишешь на асинхронном aiogram, то зачем тебе синхронных Flask или джанга... посмотри в сторону популярного нынче FastAPI.
    Ответ написан
    Комментировать
  • Как разрешить боту выполнять команды только от определённого пользователя?

    Например так
    ...
    from_id = message['from_id']
    if from_id not in ADMINS:
        return
    ...


    перед этим надо определить список пользователей ADMINS вытянув их через getConversationMembers
    Ответ написан
    Комментировать
  • Какая библиотека для создания telegram бота на Python лучше и удобнее?

    • Если ожидается большой проект с высокой посещаемостью и долгой поддержкой то у aiogram нет альтернативы. У них беда с документацией, но есть чат в TG где всегда подскажут. Там можно пообщаться и с разработчиком данной библиотеки.
    • Если это что-то простое на десяток хэндлеров и лень долго разбираться то у python-telegram-bot очень подробные wiki, документация, снипеты. Можно без опыта очень быстро разобраться... в асинхронность тоже умеет простым декоратором @run_async, можно даже запустить serverless на какой нить azure/google/aws/yandex functions с бесплатным лимитом в 1000000(azure) обращений за месяц
    • Если ограничения bot api слишком тесные и вы хотите делать то что может только клиент (например выгружать файлы больше 40Мб), то посмотрите в сторону telethon (тоже async) плюс он общается с серверам телеграма не через request-respons, а по протоколу MTProto. В частности можете посмотреть на Garnet — bot-friendly telethon
    Ответ написан
    1 комментарий
  • Telebot как лучше оформить архитектуру?

    неужели нельзя использовать асинхронный сокет, для доступа к боту? Что бы он слушал все подключённые машины которое поднимают соединение?


    Не понятно какие подключённые машины должен слушать бот, вы имеете ввиду api телеграмма? Почитайте что такое long polling и webhook. Вы можете хоть со 100 машин слать сообщения от имени одного бота используя один токен. Это телеграм будет сообщать об событиях только одной машине. Бот может работать и без полинга или хуков, только на исходящие сообщения.

    Если совсем извратиться можно настроить хуки от телеграмма на один сервер, там принимать request и класть его в какой нить брокер сообщений, паб/саб, стриминг.... на всех серверах подписаться на этот поток и обрабатывать эти реквесты, как если бы они пришли напрямую от телеграмма(вкладывая update в dispatcher.. или я не знаю как это реализовано конкретно в этой библиотеке). Отвечая с тем же токеном.
    Ответ написан
  • Как в aiogram добавить inline кнопку в которой будет выводится разный текст в зависимости от нажатой кнопки?

    Не понятно поставлен вопрос, если надо отдельную кнопку то просто отправляем новую клавиатуру с одной кнопкой (либо заменяем старую на новую). Вот подробнейший урок на русском языке
    Если надо в существующей клавиатуре заменить одну кнопку (например как на картинке нижняя пустая кнопка), то это не возможно, так же можно только заменять клавиатуру на новую, как старую, но с другой кнопкой. (из калбека вытащить message_id и заменить клавиатуру у этого сообщения с помощью edit_reply_markup).
    В документации можно посмотреть как работает InlineKeyboardMarkup и сделать свою фабрику (конструктор)
    Ответ написан
    2 комментария