Форум сайта python.su
Вы работаете с автопарком или конкретным водителем?
Допустим я водила,работаю на автопарк,у меня есть ваш бот.У меня сломался терминал,я жму в чате /help,
выбираю на клавиатуре неисправен терминал,все.Бот меня определяет по chat_id,ищет меня в базе данных,где будут и номер маршрута???,а вдруг он поменяется,и номер автобуса???? может поменяться,и телефон,????,если все это вбивать каждый раз,уже не эффективно
Логичнее если сообщение будет отправлять сам автопарк,через своего бота,который знает все про водителя,он же у них в базе данных, и вам сразу будет отправлять нужные данные.Ведь платит автопарк? или водитель?
Офлайн
xam1816С автопарком работаем. 6 автопарков.
Вы работаете с автопарком или конкретным водителем?Допустим я водила,работаю на автопарк,у меня есть ваш бот.У меня сломался терминал,я жму в чате /help,выбираю на клавиатуре неисправен терминал,все.Бот меня определяет по chat_id,ищет меня в базе данных,где будут и номер маршрута???,а вдруг он поменяется,и номер автобуса???? может поменяться,и телефон,????,если все это вбивать каждый раз,уже не эффективноЛогичнее если сообщение будет отправлять сам автопарк,через своего бота,который знает все про водителя,он же у них в базе данных, и вам сразу будет отправлять нужные данные.Ведь платит автопарк? или водитель?
Офлайн
Водитель связывается со своим диспетчером. Диспетчер отправляет заявку через телеграмм бот. Вводит данные:
1. Выбирает свой автопарк
2. Выбирает причину поломки
3. Вводит номер маршрута автобуса
4. Вводит ГРНЗ автобуса
5. Вводит телефон номер водителя(для связи наших мастеров с водители)
Я эту задачу через вордпресс решил, через формы. И даже приложение для андройда сделал из сайта. Но через сайт ответ идет по почте, что совсем не удобно…
Отредактировано numarcon (Янв. 28, 2021 21:29:24)
Офлайн
Тогда я диспетчер автопарка, и должен заполнить форму в чате бота:
-описание неисправности(причину ищет ремонтник)
-номер маршрута
-номер автобуса
-телефон для связи с водителем
кнопка подтверждение
Бот определяет автопарк по chat_id и ищет в базе данных этот автопарк,там уже в базе данных видно и название клиента ,и телефоны, и сколько денег должены, и история ремонтов и тд и тп. Бот подготавливает данные в приемлемом виде,отправляет в ваш чат,профит!!!
Офлайн
xam1816Деньги не платят. Устранение неполадок бесплатно. А так все верно
Тогда я диспетчер автопарка, и должен заполнить форму в чате бота:-описание неисправности(причину ищет ремонтник)-номер маршрута-номер автобуса-телефон для связи с водителемкнопка подтверждениеБот определяет автопарк по chat_id и ищет в базе данных этот автопарк,там уже в базе данных видно и название клиента ,и телефоны, и сколько денег должены, и история ремонтов и тд и тп. Бот подготавливает данные в приемлемом виде,отправляет в ваш чат,профит!!!
Офлайн
Тогда еще компоненты
-это класс описывающий автопарк
результат = хранение переменных chat_id,наименование,
- словарь {chat_id : Автопарк()}
результат = хранение ассоциаций с экземплярами класса Автопарк
-функция регистрации Автопарка
результат = заполнение словаря Автопарков
Реализуем пока это
Офлайн
Вот набросок…дайте комментарии пжлста кто опытный,
import telebot from bot_api import api from telebot import types bot = telebot.TeleBot(api) # тоже вопрос к знающим,нужен ли вообще класс,или лучше просто хранить в словаре class Client: def __init__(self,chat_id,name): self.chat_id = chat_id self.name = name clients = dict() # данные нужно хранить в отдельном файле,на случай перезагрузки бота, # здесь вопрос к знающим как лучше организовать хранение, #регистрация нового пользователя @bot.message_handler(commands=['reg']) def new_reg(message): chat_id = message.chat.id print(message) name = message.from_user.first_name if chat_id in clients: bot.send_message(message.chat.id, 'Вы уже зарегистрированы') else: clients[chat_id] = Client(chat_id,name) bot.send_message(message.chat.id, f'вы зарегистрированы под именем {clients[chat_id].name}') # функция реакции на help @bot.message_handler(commands=['help']) def send_welcome(message): chat_id = message.chat.id bot.send_message(chat_id, f'Отправлена заявка от {clients[chat_id].name}') if __name__ == '__main__': bot.polling(none_stop=True)
Офлайн
xam1816Это не на pyTelegramBotAPI?
Вот набросок…дайте комментарии пжлста кто опытный,
Офлайн
numarconнет, код который ты редактировал на этой библиотеке
Это не на pyTelegramBotAPI?
Отредактировано xam1816 (Янв. 28, 2021 22:50:28)
Офлайн
вот еще набросок,пошел спать у нас ночь
import telebot from bot_api import api from telebot import types bot = telebot.TeleBot(api) # тоже вопрос к знающим,нужен ли вообще класс,или лучше просто хранить в словаре class Client: def __init__(self,chat_id,name): self.chat_id = chat_id self.name = name class Appeal: def __init__(self, defect, num_route,phone ): self.defect = defect self.num_route = num_route self.phone = phone def get_info(self): return f""" дефект: {self.defect} номер маршрута: {self.num_route} телефон водителя: {self.phone}""" clients = dict() # данные нужно хранить в отдельном файле,на случай перезагрузки бота, # здесь вопрос к знающим как лучше организовать хранение, temp = dict() #регистрация нового пользователя @bot.message_handler(commands=['reg']) def new_reg(message): chat_id = message.chat.id print(message) name = message.from_user.first_name if chat_id in clients: bot.send_message(message.chat.id, 'Вы уже зарегистрированы') else: clients[chat_id] = Client(chat_id,name) bot.send_message(message.chat.id, f'вы зарегистрированы под именем {clients[chat_id].name}') # функция реакции на help @bot.message_handler(commands=['help']) def send_welcome(message): chat_id = message.chat.id if chat_id in clients: bot.send_message(chat_id, f'Отправлена заявка от {clients[chat_id].name}') markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, row_width=2) itembtn1 = types.KeyboardButton('Мобильный терминал не работает') itembtn2 = types.KeyboardButton('Стационар не работает') itembtn3 = types.KeyboardButton('Моб и стационар не работает') itembtn4 = types.KeyboardButton('Нет звука') markup.add(itembtn1, itembtn2, itembtn3, itembtn4) msg = bot.send_message(chat_id, 'Описание неисправности', reply_markup=markup) bot.register_next_step_handler(msg, route) def route(message): chat_id = message.chat.id temp['defect'] = message.text markup = types.ReplyKeyboardRemove(selective=False) msg = bot.send_message(chat_id, 'Введите маршрут автобуса', reply_markup=markup) bot.register_next_step_handler(msg, number) def number(message): temp['num_route'] = message.text chat_id = message.chat.id markup = types.ReplyKeyboardRemove(selective=False) msg = bot.send_message(chat_id, 'Введите телефон номер водителя', reply_markup=markup) bot.register_next_step_handler(msg, data_processing) def data_processing(message): temp['phone'] = message.text ap = Appeal(**temp) chat_id = message.chat.id markup = types.ReplyKeyboardRemove(selective=False) bot.send_message(chat_id, f'Полученые данные\n{ap.get_info()}', reply_markup=markup) if __name__ == '__main__': bot.polling(none_stop=True)
Офлайн