Ответы пользователя по тегу TeleBot
  • Как реализовать отправку голосование пользователям в Telegram через TeleBot?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    1) Хендлером @bot.message_handler(content_types=['poll']) ловишь сообщение с голосованием.
    2) Разбираешь сообщение и находишь там:
    'question' - Вопрос викторины
    'options' - Список ответов
    'correct_option_id' - Номер правильного ответа, если в режиме викторина.
    'explanation' - Объяснение ответа, в режиме викторина
    3) Методом send_poll отправляешь голосование/викторину с этими параметрами.
    4) Профит

    P.S. дока для send_poll
    Ответ написан
    2 комментария
  • Телеграмм-бот не ждет ответа, а выводит все сразу что делать?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    У тебя как верно заметили все сообщения отправляются в цикле разом.
    Можно сделать каждый вопрос отдельным def и перебрасывать юзера о шагам.

    Пример использования состояний
    import telebot # telebot
    
    from telebot import custom_filters
    from telebot.handler_backends import State, StatesGroup #States
    
    # States storage
    from telebot.storage import StateMemoryStorage
    
    
    
    state_storage = StateMemoryStorage() # you can init here another storage
    
    bot = telebot.TeleBot("TOKEN",
    state_storage=state_storage)
    
    
    # States group.
    class MyStates(StatesGroup):
        # Just name variables differently
        name = State() # creating instances of State class is enough from now
        surname = State()
        age = State()
    
    
    
    
    @bot.message_handler(commands=['start'])
    def start_ex(message):
        """
        Start command. Here we are starting state
        """
        bot.set_state(message.from_user.id, MyStates.name, message.chat.id)
        bot.send_message(message.chat.id, 'Hi, write me a name')
     
    
    # Any state
    @bot.message_handler(state="*", commands=['cancel'])
    def any_state(message):
        """
        Cancel state
        """
        bot.send_message(message.chat.id, "Your state was cancelled.")
        bot.delete_state(message.from_user.id, message.chat.id)
    
    @bot.message_handler(state=MyStates.name)
    def name_get(message):
        """
        State 1. Will process when user's state is MyStates.name.
        """
        bot.send_message(message.chat.id, 'Now write me a surname')
        bot.set_state(message.from_user.id, MyStates.surname, message.chat.id)
        with bot.retrieve_data(message.from_user.id, message.chat.id) as data:
            data['name'] = message.text
     
     
    @bot.message_handler(state=MyStates.surname)
    def ask_age(message):
        """
        State 2. Will process when user's state is MyStates.surname.
        """
        bot.send_message(message.chat.id, "What is your age?")
        bot.set_state(message.from_user.id, MyStates.age, message.chat.id)
        with bot.retrieve_data(message.from_user.id, message.chat.id) as data:
            data['surname'] = message.text
     
    # result
    @bot.message_handler(state=MyStates.age, is_digit=True)
    def ready_for_answer(message):
        """
        State 3. Will process when user's state is MyStates.age.
        """
        with bot.retrieve_data(message.from_user.id, message.chat.id) as data:
            msg = ("Ready, take a look:\n<b>"
                   f"Name: {data['name']}\n"
                   f"Surname: {data['surname']}\n"
                   f"Age: {message.text}</b>")
            bot.send_message(message.chat.id, msg, parse_mode="html")
        bot.delete_state(message.from_user.id, message.chat.id)
    
    #incorrect number
    @bot.message_handler(state=MyStates.age, is_digit=False)
    def age_incorrect(message):
        """
        Wrong response for MyStates.age
        """
        bot.send_message(message.chat.id, 'Looks like you are submitting a string in the field age. Please enter a number')
    
    # register filters
    
    bot.add_custom_filter(custom_filters.StateFilter(bot))
    bot.add_custom_filter(custom_filters.IsDigitFilter())
    
    bot.infinity_polling(skip_pending=True)
    Ответ написан
    Комментировать
  • Как сделать рассылку фото и фото с подписями telebot?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    Замени это - @bot.message_handler(func=lambda message: True)
    На это - @bot.message_handler(content_types=['text'])
    Ответ написан
    Комментировать
  • Как правильно активировать библиотеку telebot?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    Правильно будет pip install pytelegrambotapi
    Ответ написан
  • Как сделать рассылку Telebot?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    1. Получаешь все id из базы
    2. Циклом for проходишься по всем id которые получил.
    3. Добавляешь time.sleep чтобы телега не забанила.
    Пример:
    user = "sql запрос"
    for i in user:
        bot.send_message(user[0], "Текст рассылки")
        time.sleep(0.5)
    Ответ написан