Найти - Пользователи
Полная версия: Простейший телеграм-бот "Сбор заявок"
Начало » Python для новичков » Простейший телеграм-бот "Сбор заявок"
1
Temych
Начал изучать телеграм ботов, библиотека pyTelegramBotAPI, понял как писать эхо-бота (то есть реакция на абсолютно все сообщения), реагировать на команду, на кнопку, на определенный текст сообщения, но как обрабатывать единичное входящее сообщение? Нужен простейший бот, который спрашивает поочередно имя, номер телефона и эл.почту человека. И главное, чтобы каждые данные вводились после соответствующего вопроса бота. Все данные записать в свои стринговые переменные и вывелись в консоль. Желательно с пояснениями. Заранее спасибо.
xam1816
Temych
Желательно с пояснениями. Заранее спасибо.
Есть такие программы которые собирают телеграмм ботов,в принципе простые боты можно собирать не заморачиваясь.Как называются не помню их несколько,забить в поиск нужно
Temych
xam1816
Вы не поняли! Да, есть конструкторы ботов, но написанные собственноручно боты имеют свои преимущества. Мне надо именно научиться кодить бота
py.user.next
Temych
Нужен простейший бот, который спрашивает поочередно имя, номер телефона и эл.почту человека.
Нужно сделать память боту. А потом в этой памяти нужно хранить состояние бота. Бот должен представлять из себя детерминированный конечный автомат. Естественно, он должен помнить своих клиентов с помощью этой памяти и с каждым клиентом быть в том состоянии, до которого тот клиент довёл бота. Так что это не такая простая программа, как ты обозначил её. Тебе нужно знать побольше про программирование вообще. Один питон тут, даже с модулями, тебе никак не поможет построить всю эту архитектуру.
xam1816
Temych
Мне надо именно научиться кодить бота
Вечером попробую написать
xam1816
 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB