Форум сайта python.su
0
Начал изучать телеграм ботов, библиотека pyTelegramBotAPI, понял как писать эхо-бота (то есть реакция на абсолютно все сообщения), реагировать на команду, на кнопку, на определенный текст сообщения, но как обрабатывать единичное входящее сообщение? Нужен простейший бот, который спрашивает поочередно имя, номер телефона и эл.почту человека. И главное, чтобы каждые данные вводились после соответствующего вопроса бота. Все данные записать в свои стринговые переменные и вывелись в консоль. Желательно с пояснениями. Заранее спасибо.
Офлайн
124
TemychЕсть такие программы которые собирают телеграмм ботов,в принципе простые боты можно собирать не заморачиваясь.Как называются не помню их несколько,забить в поиск нужно
Желательно с пояснениями. Заранее спасибо.
Офлайн
0
xam1816Вы не поняли! Да, есть конструкторы ботов, но написанные собственноручно боты имеют свои преимущества. Мне надо именно научиться кодить бота
Офлайн
857
TemychНужно сделать память боту. А потом в этой памяти нужно хранить состояние бота. Бот должен представлять из себя детерминированный конечный автомат. Естественно, он должен помнить своих клиентов с помощью этой памяти и с каждым клиентом быть в том состоянии, до которого тот клиент довёл бота. Так что это не такая простая программа, как ты обозначил её. Тебе нужно знать побольше про программирование вообще. Один питон тут, даже с модулями, тебе никак не поможет построить всю эту архитектуру.
Нужен простейший бот, который спрашивает поочередно имя, номер телефона и эл.почту человека.
Отредактировано py.user.next (Сен. 25, 2021 23:16:19)
Офлайн
124
TemychВечером попробую написать
Мне надо именно научиться кодить бота
Офлайн
124
from bot_api import api import telebot bot = telebot.TeleBot(api) class Dialog: def __init__(self, chat_id): self.chat_id = chat_id self.ask_list = ['ваше имя','номер телефона','адрес'] self.answers = {} self.qsts = self.questions() def questions(self): for ask in self.ask_list: yield ask def to_ask(self): try: ask = next(self.qsts) m = bot.send_message(self.chat_id, ask) bot.register_next_step_handler(m, self.processing_answer, ask=ask) except StopIteration: print(self.answers) def processing_answer(self, msg, ask): self.answers[ask] = msg.text self.to_ask() # dialogs = {} @bot.message_handler(commands=['reg']) def accept_msg(msg): chat_id = msg.chat.id if chat_id not in dialogs: dialogs[chat_id] = Dialog(chat_id) dialogs[chat_id].to_ask() else: bot.send_message(chat_id,' вы уже опрошены') if __name__ == '__main__': print('бот запущен') bot.polling(none_stop=True)
Офлайн