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

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

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

    @twistfire92
    Python backend developer
    if name == n :
        break
    if name == y :
        p =()
        ......


    Вы с чем сравниваете name? Со строкой или с переменной? Кавычки ставьте.
    Ответ написан
    Комментировать
  • Как используя данную функцию с модуля telebot применить ее в исходном коде?

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

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

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

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

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

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

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

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

    Тут уже использовать библиотеку scheduler или подобное.
    Ответ написан
    Комментировать
  • Как сохранять сообщения c пометкой изменено в telegram боте?

    @twistfire92
    Python backend developer
    Используйте @bot.edited_message_handler чтобы отловить момент с измененным сообщением.
    Главная проблема будет состоять в том, что вам надо будет понять что за сообщение поменялось. Первой версии сообщения вы уже не получите. Вы можете хранить ID сообщения где пользователь ввел имя, ID где фамилию, телефон и т.д. И уже по этим ID понимать что было изменено.

    И это легко реализовать уже после записи данных в БД. А вот вклиниться посреди работы схемы из множества register_next_step_handler уже будет сложнее. Или нет, не пробовал. Но вы поэкспериментируйте!
    Ответ написан
    Комментировать
  • Как расположить 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
    Ссылка приглашение генерируется методом exportChatInviteLink. Если вы пользуетесь библиотекой telebot, то пользуйтесь методом export_chat_invite_link.
    Этот метод генерирует новую ссылку приглашение. Старая в этом случае теряет свою работоспособность.
    Получить текущую ссылку можно через команду GetChat. Этот метод возвращает объект Chat в котором есть поле invite_link.

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

    А вообще вся вышеуказанная информация написана в документации к Telegram Bot API. Ищите сначала там.
    Ответ написан
    Комментировать
  • Как заменить фото бота в телеграм?

    @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.
    Ответ написан
  • Telebot - Как реализовать приём сообщений с callback_data?

    @twistfire92
    Python backend developer
    Изучите работу с register_next_step_handler

    Пример

    По сути это реализация ожидания ввода от пользователя.
    Через callback_query_handler отлавливаете нажатие на кнопку, и потом делаете обработку этого нажатия с register_next_step_handler
    Ответ написан
  • Почему python не отправляет сообщения в telegram?

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

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

    @twistfire92
    Python backend developer
    переменная rl используется раньше, чем объявлена.
    уберите if else при объявлении rl rl2 rl3.

    по сути они вообще не нужны, передавайте сразу "Камень" "Ножницы" "Бумага".
    Ответ написан
  • 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".
    Ответ написан