Ответы пользователя по тегу Telegram
  • Как рандомно открыть фотки в Телеграмм Боте на Python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    У тебя есть папки (Москва, Питер, Казань и т.д.) В каждой из них еще есть папки (допустим в Москве есть папка кремль). В Этой папке кремль есть txt и фотки.

    Пусть юзер нажал кнопку "Москва". Там есть 3 папки: Кремль, Набережная, Воробьевы горы. Далее мы получаем список всех подпапок папки Москва и рандомом выбираем любую. Получаем её имя, заходим в нее и получаем все фотки (можно именовать 1.jpg, 2.jpg и т.д. или же получать список всех файлов по определенным расширениям jpg, png и т.д.), txtшник желательно именовать всегда одинаково (допустим desc.txt).

    И отправляем все это дело пользователю.

    Страшная задача "Как рандомно открыть фотки в Телеграмм Боте на Python?" выливается в несколько маленьких подзадач, решения которых лежат в интернете и находятся в свободном доступе)
    Ответ написан
    Комментировать
  • Бот написанный на Python не работает после выключения компьютера?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Бот на Python - эта та же самая программа. А программа должна где-то исполняться.

    В твоем случае она исполняется на твоем компьютере. Когда ты выключаешь компьютер - все программы, которые на нем исполнялись - перестают исполняться. Поэтому бот и не работает.

    Своего бота ты можешь разместить на любом vds/vps или выделенном сервере. Также можно воспользоваться хостингом приложений в облаке по типу heroku.
    Ответ написан
    Комментировать
  • Как ограничить количество запросов после многократных нажатий на кнопку?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Самое простое что можно сделать - заносить перед запросом в базу id юзера в список какой-нибудь. А после запроса в базу - удалять из списка. При регистрации проверять наличие id юзера в этом списке. Если он там есть - ничего не делаем.

    ======
    Еще один способ. Вынести процесс регистрации юзера в отдельный поток. Это позволит в порядке очереди обслуживать запросы на регистрацию и не допускать дубли в базе.
    =======
    Еще способ. В базе на id юзера ставить уникальный индекс. Это на уровне СУБД не даст сделать дубль.
    Ответ написан
  • Как отправить изображение с imgur в Telegram Bot Python?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Потому что по ссылке html страница, а не фотка. Надо делать так

    bot.send_photo(message.chat.id, get('https://i.imgur.com/yaBianG.jpeg').content)
    Ответ написан
    Комментировать
  • Щпащулрзчзвулпщ?

    pro100chel
    @pro100chel
    Python && PHP Developer
    @bot.message_handler(content_types=['photo']) 
    def photo(message): 
        print("фоточка")
    Ответ написан
    Комментировать
  • Почему может возникать ошибка SimpleQIWI.errors.QIWIAPIerror?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Если учитывать что ты запрашиваешь историю платежей то это может быть:

    1) нет нужных разрешений у токена
    2) превышена частота запросов истории платежей (100 запросов в минуту)
    Ответ написан
    1 комментарий
  • Как имея username узнать ID пользователя в Telegram?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Средствами телеграма никак.

    Ты можешь держать таблицу с соответствием id - username. И оттуда уже брать данные.

    Также нельзя забывать про возможность смены username. Так что нужно делать возможность обновления этой таблицы при смене username.

    PS: username юзера можно получить при:

    1) Получении от него сообщения
    2) Отправке ему сообщения

    Поэтому лучше всего при отправке каждого сообщения пользователю смотреть на его username и если он изменился то обновлять соответствие в таблице.

    Или же в случае если юзер давно не пишет то отправлять ему сообщение, смотреть его username и сразу же удалять сообщение
    Ответ написан
    3 комментария
  • Как определить что человек удалил бота?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Берешь и банишь бота сам и пробуешь себе скриптом отправить сообщение. Смотришь что прилетает в ответ и составляешь необходимое условие в if.

    Дальше делаешь рассылку по базе пользователей и по этому условию понимаешь кто удалил бота.

    Вот и все.
    Ответ написан
  • Как использовать функцию if много раз?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Выкинуть эту функцию в отдельный поток и пусть она там себе исполняется каждую минуту
    Ответ написан
  • Как можно редактировать тг бота и держать его онлайн?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Имеешь 2 бота в ТГ. Один для тестов, другой для прода.
    Прод останавливаешь только на долю секунды, предварительно загрузив новую версию бота на сервер и подготовив команду для запуска. Skip updates сделай false и будет тебе бесшовный деплой.
    Ответ написан
    Комментировать
  • Ошибка в telebot, как исправить?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    У тебя в коде есть переменная search и функция search. Чето одно нужно переименовать
    Ответ написан
  • Как скрыть кнопку pytelegrambotapi?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Передавай в функцию keyboard_chifri id юзера, проверяй статус в базе и если есть статус нужный то добавляй кнопку.
    В чем проблема то?
    Ответ написан
  • Почему телеграмм бот выключается от нагрузки памяти на хостинге?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Мб ты где-то заполняешь список, словарь или что-нибудь еще и не очищаешь.
    Ответ написан
    5 комментариев
  • Как реализовать передачу данных между игроками в Телеграм боте?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Наверн нужно где-то эти данные сохранять? А потом передавать другому игроку.
    А где хранить это уже тебе решать.
    Ответ написан
    3 комментария
  • AttributeError: module 'telebot' has no attribute 'TeleBot' ( telebot )?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Не тот телебот мб?
    Надо:
    pip install pytelegrambotapi
    Ответ написан
    7 комментариев
  • Почему крашится ТelegramBot?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Слишкам мнохо запросав. Хорош спамить.

    ЛИМИТЫ ДЛЯ БОТОВ
    Максимальное количество ботов на один аккаунт, созданных через @BotFather — 20 штук.
    Длина @username для бота – от 5 до 32 символов.
    Максимальная длина информации о боте (/setabouttext) — 120 символов.
    Максимальная длина описания бота (description) — 512 символов.
    Макс. количество сообщений от бота в секунду — 30.
    Ответ написан
    3 комментария
  • Как сделать телеграм бот работоспособным?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    from pyowm import OWM
    from pyowm.utils.config import get_default_config
    config_dict = get_default_config()
    config_dict['language'] = 'RU'
    import telebot
    
    owm = OWM('a91bee44d09a57842353573df6d4e01a')
    bot = telebot.TeleBot("1058623246:AAEbGu0nyd681DjRmpWx217WRx2VFi1VJsw")
    mgr = owm.weather_manager()
    
    @bot.message_handler(content_types=['text'])
    def send_echo(message):
      #bot.reply_to(message, message.text)
        observation = owm.weather_at_place( message.text )
        w = observation.weather
        temp = w.temperature ( 'celsius' )["temp"]
    
        answer = " В городе " + message.text + " cейчас " + w.detailed_status + "\n"
        answer += " Температура в выбранном городе соответствует " + str(temp) + " градусам по шкале Цельсия" +"\n"
    
        if temp < 15 :
            answer+=  " На улице холодно, надевай валенки"
        elif 20 > temp > 14 :
            answer+=  " Ну такое"
    
        elif 19 < temp < 27 :
            answer+=  " Комфортно, сер"
        else :
            answer+=  " Жарко чет"
        bot.send_message(message.chat.id, answer)
    
    bot.polling(none_stop=True)


    Нашел различия?

    А вот оно:

    У тебя так написано:
    answer = " В городе " + message.text + " cейчас " + w.detailed_status() + "\n"


    А у меня так:
    answer = " В городе " + message.text + " cейчас " + w.detailed_status + "\n"


    Ты как бы понимай различия между вызовом метода у объекта и получением его свойства.
    Ответ написан
    Комментировать
  • Как реализовать отправку сообщения с сервера на почту / телеграм (куда угодно) на php или javascript?

    pro100chel
    @pro100chel
    Python && PHP Developer
    Почту сейчас не отсылают mail. Динозавры отсылают, но лучше так не делать.

    Как я уже говорил связочка smtp от yandex и phpmailer прекрасно чувствует себя в современном мире.

    Отсылка сообщений в телегу или вк осуществляется при помощи API. Почитай документацию, найди немного гайдов, библиотек.

    На js такое не делается. Делается на node.js, но в твоем случае лучше это делать на php. Меньше заморочек и быстрее будет готово.
    Ответ написан
    Комментировать
  • Как запрограмировать бота так, чтобы он отправлял сообщение всем пользователям в одно и тоже время?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    Обычным циклом. Для этого в списке в скрипте или же в базе нужно хранить список с id юзеров, которым нужно отправить сообщение.
    Только если юзеров слишком много (вроде больше 30), то у тебя не получится одновременно всем отослать. У телеги стоит ограничение в 30 запросов в секунду.
    Ответ написан
    Комментировать
  • Как в тг ботае сделать защиту от флуда?

    pro100chel
    @pro100chel Куратор тега Python
    Python && PHP Developer
    БД не для этого. Делай это прямо в приложении. создай список. Каждый раз при запросе вставляй id юзера в список. Каждую секунду обнуляй этот список. И при каждом запросе проверяй сколько в этом списке id этого юзера при помощи count.

    Это максимально простой способ.

    можно считать count.
    count = listix.count(555)
    В листе с 1 млн элементов время 15 мс.

    Своя же реализация 0.5 мс работает, то есть в 30 раз быстрее. Но все зависит от случая. В твоей ситуации без разницы. Врядли будет 1 млн в секунду запросов
    listix = []
    counter = 0
    for i in listix:
    	if i == 555:
    		counter += 1
    	if counter >= 5:
    		print('DDOS')
    		break
    Ответ написан
    3 комментария