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

    @twistfire92
    Python backend developer
    На эту строку не ругается?
    bot.send_photo(message.chat.id, st)

    Просто переменная message скорее всего не определена, так что попробуйте
    bot.send_photo(call.message.chat.id, st)
    Ответ написан
    Комментировать
  • Как используя данную функцию с модуля telebot применить ее в исходном коде?

    @twistfire92
    Python backend developer
    Вы ошиблись с методом.
    register_next_step_handler используется для того, чтобы бот ожидал конкретного сообщения от пользователя, например можно ожидать следующим сообщением имя пользователя или дату рождения. Подробнее описано там же на гитхабе, откуда вы взяли эту функцию
    Ходить сюда

    Скорее всего этот метод не поможет в решении вашей задачи, но ознакомиться с ним полезно, тем более используется часто.

    Прямо в чат с ботом техподдержка не от имени бота не сможет ответить. Личные чаты - это личные чаты. Там только 2 пользователя. Пользователь и бот. В прошлом вашем вопросе я уже говорил, что если вы хотите в том же чате подключать оператора, то можно попробовать превратить бота в так называемого посредника. И оператор поддержки и пользователь будут писать сообщения боту, а тот в свою очередь перенаправлять их собеседнику.
    Ответ написан
  • Как реализовать подключения оператора в телеграмм бот?

    @twistfire92
    Python backend developer
    Как можно в телеграмм боте при нажатии кнопки подключить оператора? Нужно чтобы всем операторам пришло уведомление

    Можете хранить ID всех операторов в БД и при нажатии на кнопку делать рассылку по всем операторам, глаяное, чтобы каждый оператор хотя бы раз контачил с этим ботом, иначе сообщения он не получит.

    за тем закрепляется чат с пользователем

    Далее уже либо личная беседа оператора и пользователя, либо как-то организовать общение через самого бота. Бот дублирует сообщение, которое ему отправил оператор и отправляет пользователю. И наоборот. Но это уже слишком заморочно и не совсем правильно что-ли. Хотя так сходу не скажу как еще это организовать средствами телеги, да так, чтобы бот мог все это организовать.

    Если пользователь в течение 15 минут ничего не ответил, отключить оператора от чата.

    Тут уже использовать библиотеку scheduler или подобное.
    Ответ написан
    Комментировать
  • Как расположить inline кнопки в pytelegrambotapi?

    @twistfire92
    Python backend developer
    Row_width не обязательно указывать вообще. По умолчанию значение равно 3.
    Т.е. если просто в объект InlineKeyboardMarkup добавлять кнопки поочередно, они будут выстраиваться линиями по 3 кнопки в ряд.

    Вам надо использовать метод row(), передавая туда список объектов InlineKeyboardButton

    Т.е. если ориентироваться на ваш скрин, то располагать кнопки следует следующим образом:
    start_markup = telebot.types.InlineKeyboardMarkup()
    
    # первый ряд (две кнопки)
    btn1= telebot.types.InlineKeyboardButton('действие 1', callback_data='1')
    btn2= telebot.types.InlineKeyboardButton('действие 2', callback_data='2')
    start_markup.row(btn1, btn2)
    
    # второй ряд (одна кнопка)
    btn3= telebot.types.InlineKeyboardButton('действие 3', callback_data='3')
    start_markup.row(btn3)
    
    # третий ряд (две кнопки)
    btn4= telebot.types.InlineKeyboardButton('действие 4', callback_data='4')
    btn5= telebot.types.InlineKeyboardButton('действие 5', callback_data='5')
    start_markup.row(btn4, btn5)
    
    # четвертый ряд (две кнопки)
    btn6= telebot.types.InlineKeyboardButton('действие 6', callback_data='6')
    btn7= telebot.types.InlineKeyboardButton('действие 7', callback_data='7')
    start_markup.row(btn6, btn7)
    
    # пятый ряд (одна кнопка)
    btn8= telebot.types.InlineKeyboardButton('действие 8', callback_data='8')
    start_markup.row(btn8)
    Ответ написан
    Комментировать
  • Как заменить фото бота в телеграм?

    @twistfire92
    Python backend developer
    Вот поиграйтесь с этим кодом.
    найдите картинки соответствующие и просмотрите как все это работает в примере ниже

    import telebot
    from telebot import types
    
    token = '' 
    
    bot = telebot.TeleBot(token)
    
    @bot.message_handler(commands=['start'])
    def send_welcome(message):
    	photo = open('racoon.jpg', 'rb')
    	markup = create_markup()
    	bot.send_photo(message.chat.id, photo, caption='Енот', reply_markup=markup)
    
    @bot.callback_query_handler(func=lambda c: True)
    def change_photo(call):
    	markup = create_markup()
    	chat_id=call.message.chat.id
    	message_id=call.message.message_id
    	if call.data == 'racoon':
    		photo = open('racoon.jpg', 'rb')
    		media = types.InputMediaPhoto(photo, caption='Енот')
    		bot.edit_message_media(media=media, chat_id=chat_id, message_id=message_id, reply_markup=markup)
    		
    	elif call.data == 'fox':
    		photo = open('fox.jpg', 'rb')
    		media = types.InputMediaPhoto(photo, caption='Лиса')
    		bot.edit_message_media(media=media, chat_id=chat_id, message_id=message_id, reply_markup=markup)
    		
    	elif call.data == 'rabbit':
    		photo = open('rabbit.jpg', 'rb')
    		media = types.InputMediaPhoto(photo, caption='Заяц')
    		bot.edit_message_media(media=media, chat_id=chat_id, message_id=message_id, reply_markup=markup)
    		
    
    def create_markup():
    	markup = types.InlineKeyboardMarkup()
    	button1 = types.InlineKeyboardButton(text='Енот', callback_data='racoon')
    	button2 = types.InlineKeyboardButton(text='Лиса', callback_data='fox')
    	button3 = types.InlineKeyboardButton(text='Заяц', callback_data='rabbit')
    	markup.row(button1, button2, button3)
    	return markup
    
    bot.polling()


    Результат этого кода (Все это - одно сообщение, в котором перерисовывалась картинка):

    5f72cdac977d9702675906.png
    5f72cdc24d779354601542.png
    5f72cddaf2294374777349.png

    Единственный момент - это если будете менять зайца на зайца например, то код упадет в ошибку.
    Но это уже другая проблема))
    Ответ написан
    Комментировать
  • Как реализовать tet-a-tet чат между пользователями в телеграмм боте?

    @twistfire92
    Python backend developer
    Бот не может создавать групповые чаты. Его туда можно только добавить.
    Ответ написан
    Комментировать
  • Как сделать отмену с помощью Inline клавиатуры?

    @twistfire92
    Python backend developer
    в раздел Игры добавляете кнопку "Отмена" и точно так же как и в остальных случаях через edit_message_text создаете главное меню. Весь код у вас уже готов, просто копируйте из функции send_welcome, только там вместо send_message вызываете edit_message_text
    Ответ написан
    Комментировать
  • Как поменять фото телеграм бота на новое?

    @twistfire92
    Python backend developer
    Вы отправляете отдельно картинку, отдельно текст. С помощью метода send_photo можно передавать не только фото, но и подпись к нему и вроде даже блок кнопок. А потом уже менять фотографию методом edit_message_media.
    Ответ написан
  • Почему python не отправляет сообщения в telegram?

    @twistfire92
    Python backend developer
    А что за метод newpost?

    Может надо использовать sendMessage?
    Ответ написан
  • ReplyKeyboardRemove, как работать?

    @twistfire92
    Python backend developer
    Передавай свою keyboard в отправке следующего сообщения как параметр reply_markup=keyboard
    Ответ написан
    Комментировать
  • Как заставить бота ждать ответ в определенный момент?

    @twistfire92
    Python backend developer
    гугли register_next_step_handler
    Ответ написан
    Комментировать
  • Как заставить телеграм бота пересылать имя пользователя?

    @twistfire92
    Python backend developer
    У некоторых пользователей нет ни юзернейма нормального, по которому можно найти через @, ни имени фамилии и пр.

    А вообще вся информация об отправителе лежит в message.from_user
    message.from_user.id - id пользователя, собственно то, что возвращает пример из гитхаба
    message.from_user.first_name - Имя
    message.from_user.last_name - Фамилия
    message.from_user.username - юзернейм

    Возможно этих полей и не будет в ответах от тех пользователей, у кого они не заполнены.
    Но это все очень доступно описано в документации.
    Ответ написан
    1 комментарий
  • Как переменную передавать с одной функции в другую telebot?

    @twistfire92
    Python backend developer
    в register_next_step_handler первые 2 параметра - это сообщение и функция, которая вызывается. Далее передаются параметры, если у вызываемой функции есть какие-либо свои параметры, помимо message.

    bot.register_next_step_handler(message, first_name, <Параметр1>, <Параметр2>)

    ...

    def first_name(message, <Параметр1>, <Параметр2>):
    Ответ написан
    Комментировать
  • Телеграм бот с while?

    @twistfire92
    Python backend developer
    У тебя в цикле while нет команды ожидать. Ты просто тупо в цикле обходишь числа от 1 до 5 и отправляешь сообщения. Нету еще одного register_next_step_handler
    Вообще почему while, а не for? В твоем случае же известно количество рабочих.

    Еще можно предлагать пользователю вводить имена рабочих пока не закончатся, не спрашивая заранее их количество. Триггером завершения записи может быть какое-либо слово, типа "стоп" или "done".
    Ответ написан
  • Метод для заполнения InlineKeyboardMarkup в цикле?

    @twistfire92
    Python backend developer
    markup = InlineKeyboardMarkup(resize_keyboard=True)
    for answer in answers:
    button = InlineKeyboardButton(text=answer, callback_data=answer)
    markap.row(button)
    update.message.reply_text("Ваш вопрос:\n" + text_question[0], reply_markup=markup)
    Ответ написан
    Комментировать
  • Как реализовать добавление вариантов к опросу с помощью python-telegram-bot?

    @twistfire92
    Python backend developer
    #Список с ответами
    answers = ['вариант 1', 'вариант 2', 'вариант 3', 'вариант 4']
    
    markup = types.InlineKeyboardMarkup()
    for answer in answers:
        button = types.InlineKeyboardButton(text=answer, callback_data=answer)
        markup.row(button)
    
    question = 'какой вариант выберете?'
    
    bot.send_message(message.chat.id, question, reply_markup=marckup)


    Если все правильно написал, то в итоге будет сообщение с текстом вопроса ('какой вариант выберете?') и 4-мя инлайн кнопками, каждая в своей строке (благодаря функции row())
    Ответ написан
    2 комментария
  • Как отравить сообщение через proxy TELEBOT?

    @twistfire92
    Python backend developer
    https://www.youtube.com/watch?v=CDFFfWOqVKs

    посмотрите тут как все должно быть настроено.
    Найдите рабочий прокси, возможно придется перебрать несколько штук.
    И библиотека requests должна быть не самая свежая, а версии вроде 2.10.0, в видосе сказано точнее.
    Ответ написан
    Комментировать
  • Как связать телеграмм-бота с Инстаграм?

    @twistfire92
    Python backend developer
    Заведите маленькую БД, куда будете складывать ID всех пользователей, с кем контачил ваш бот. При команде /start, к примеру, записывать ID пользователя в базу. Когда будет необходимо, выгружать из базы все IDшники и в цикле рассылать им сообщения.

    Если это чисто домашняя затея, не претендующая на "правильность" решения, можно вместо БД хоть текстовый файл использовать. Суть одна - где-то должен храниться список всех ID, с которым контачил бот.

    Рассылку делать через try, ибо если пользователь заблокирует бота, отправка сообщения упадет в ошибку.
    Ответ написан