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

    @Stormx480
    Python Backend Developer
    Смотри. Насколько я знаю в конструкторе класса ReplyKeyboardMarkup такое не предусмотрено.

    Но ты можешь вынести это в обработку логики самой кнопки.

    Когда человек нажимает на кнопку (обычную) он отправляет боту текст, который ты ловишь с помощью декоратора-хэндлера, для примера возьмем кнопку "Найти фильм':

    @bot.message_handler(regexp = 'Найти фильм')
    def find_film(message):
      pass


    Далее, нам надо добавить туда логику, что бы убиралась клавиатура после нажатия кнопки.
    Для этого есть класс ReplyKeyboardRemove.
    Воспользуемся им:

    @bot.message_handler(regexp = 'Найти фильм')
    def find_film(message):
      markup = telebot.types.ReplyKeyboardRemove()
      bot.send_message(message.chat.id, 'remove keyboard', reply_markup=markup)


    Таким образом, логику которую ты не можешь поместить в конструктор класса ReplyKeyboardMarkup - ты можешь вынести в функции обработчики.
    Ответ написан
    Комментировать
  • Как вытянуть ответ пользователя телеграмм боту и добавить его в переменную типа string?

    @Stormx480
    Python Backend Developer
    Либо добавь условный оператор, либо делай инлайн кнопки с коллбэками.
    Ответ написан
    Комментировать
  • Не срабатывает callback у inline keyboard в telegram боте. В чем может быть причина?

    @Stormx480
    Python Backend Developer
    А ловить сообщения то кто хэндлерами будет?
    Только у тебя updater а не хэндлер, но суть не меняется
    @bot.callback_query_handler(func=lambda c: c.data == 'callback')#Ловим коллбэк от кнопки. Нам передается объект CallbackQuery который содержит поле data и message. Сейчас нам нужно из даты достать наше слово которое мы передали в атрибуте callback_data
    def callback_answer(callback_query: types.CallbackQuery): #И отвечаем на него
        bot.answer_callback_query(
                callback_query.id,
                text='Hello! This callback.',
                show_alert=True
                )
    Ответ написан
    Комментировать
  • Как определить разное поведение Бота Telegram для разных пользователей?

    @Stormx480
    Python Backend Developer
    У тебя есть два бота. Бот А - для господина Админа, Бот Б - для бом...холопов.
    Вынеси каждый из ботов в отдельный файл, можешь так и назвать.
    В мэйн скрипте (где вебхук ставишь) сделай в самом начале проверку, можешь через декортатор
    If message.id == 'айди твоего админа':
    botadmin.Bot()
    else:
    botbomzh.Bot()

    Что то типо такого, думаю ты понял.
    Ответ написан
    Комментировать
  • Как делать цепочки диалогов в Telegram Bot?

    @Stormx480
    Python Backend Developer
    Сразу скину ссылку на свою заготовку для моих ботов, там ответ есть но я поясню еще ниже Github

    Если ты внимательно следил за событиями прошлого года, то наверное знаешь что Роскомнадзор заблокировал телегу на территории РФ, поэтому для того что бы использовать соединение Long Polling (прим. - это соединение ты вызываешь при обращении к функции bot.polling()) тебе надо импортировать модуль apihelper и сделать соединение через прокси сервер (я использовал метод с SOCKS проксями, их бесплатно можно найти в самой телеге, там есть боты которые выдают, погугли.) и тогда все будет работать. Сейчас бот просто не может подключится к серверу телеграмм из за чего и выскакивает ошибка.
    Сам код для apihelper:
    spoiler
    from telebot import apihelper
    
    apihelper.proxy = {'http':'http://10.10.1.10:3128'}
    #или вариант с socks5
    apihelper.proxy = {'https':'socks5://userproxy:password@proxy_address:port'}


    И рекомендую выносить клавиатуры и повторяющиеся блоки кода в отдельные файлы и импортировать их куда надо, это сделает сам код читабельнее и чище, а разработку удобнее.
    А вообще глянь мой гитхаб там вроде бы неплохой пример бота, тебе чуть времени сэкономит.
    Удачи в разработке)

    Пы.Сы. - Офф. гитхаб библиотеки там был ответ на твой вопрос в разделе Proxy. Почитай документацию перед разработкой, це полезно.
    Ответ написан