xam1816
Янв. 28, 2021 21:17:20
Вы работаете с автопарком или конкретным водителем?
Допустим я водила,работаю на автопарк,у меня есть ваш бот.У меня сломался терминал,я жму в чате /help,
выбираю на клавиатуре неисправен терминал,все.Бот меня определяет по chat_id,ищет меня в базе данных,где будут и номер маршрута???,а вдруг он поменяется,и номер автобуса???? может поменяться,и телефон,????,если все это вбивать каждый раз,уже не эффективно
Логичнее если сообщение будет отправлять сам автопарк,через своего бота,который знает все про водителя,он же у них в базе данных, и вам сразу будет отправлять нужные данные.Ведь платит автопарк? или водитель?
numarcon
Янв. 28, 2021 21:21:17
xam1816
Вы работаете с автопарком или конкретным водителем?Допустим я водила,работаю на автопарк,у меня есть ваш бот.У меня сломался терминал,я жму в чате /help,выбираю на клавиатуре неисправен терминал,все.Бот меня определяет по chat_id,ищет меня в базе данных,где будут и номер маршрута???,а вдруг он поменяется,и номер автобуса???? может поменяться,и телефон,????,если все это вбивать каждый раз,уже не эффективноЛогичнее если сообщение будет отправлять сам автопарк,через своего бота,который знает все про водителя,он же у них в базе данных, и вам сразу будет отправлять нужные данные.Ведь платит автопарк? или водитель?
С автопарком работаем. 6 автопарков.
numarcon
Янв. 28, 2021 21:28:56
Водитель связывается со своим диспетчером. Диспетчер отправляет заявку через телеграмм бот. Вводит данные:
1. Выбирает свой автопарк
2. Выбирает причину поломки
3. Вводит номер маршрута автобуса
4. Вводит ГРНЗ автобуса
5. Вводит телефон номер водителя(для связи наших мастеров с водители)
Я эту задачу через вордпресс решил, через формы. И даже приложение для андройда сделал из сайта. Но через сайт ответ идет по почте, что совсем не удобно…
xam1816
Янв. 28, 2021 21:37:03
Тогда я диспетчер автопарка, и должен заполнить форму в чате бота:
-описание неисправности(причину ищет ремонтник)
-номер маршрута
-номер автобуса
-телефон для связи с водителем
кнопка подтверждение
Бот определяет автопарк по chat_id и ищет в базе данных этот автопарк,там уже в базе данных видно и название клиента ,и телефоны, и сколько денег должены, и история ремонтов и тд и тп. Бот подготавливает данные в приемлемом виде,отправляет в ваш чат,профит!!!
numarcon
Янв. 28, 2021 21:39:25
xam1816
Тогда я диспетчер автопарка, и должен заполнить форму в чате бота:-описание неисправности(причину ищет ремонтник)-номер маршрута-номер автобуса-телефон для связи с водителемкнопка подтверждениеБот определяет автопарк по chat_id и ищет в базе данных этот автопарк,там уже в базе данных видно и название клиента ,и телефоны, и сколько денег должены, и история ремонтов и тд и тп. Бот подготавливает данные в приемлемом виде,отправляет в ваш чат,профит!!!
Деньги не платят. Устранение неполадок бесплатно. А так все верно
xam1816
Янв. 28, 2021 21:55:44
Тогда еще компоненты
-это класс описывающий автопарк
результат = хранение переменных chat_id,наименование,
- словарь {chat_id : Автопарк()}
результат = хранение ассоциаций с экземплярами класса Автопарк
-функция регистрации Автопарка
результат = заполнение словаря Автопарков
Реализуем пока это
xam1816
Янв. 28, 2021 22:31:00
Вот набросок…дайте комментарии пжлста кто опытный,
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)
numarcon
Янв. 28, 2021 22:36:42
xam1816
Вот набросок…дайте комментарии пжлста кто опытный,
Это не на pyTelegramBotAPI?
xam1816
Янв. 28, 2021 22:49:00
numarcon
Это не на pyTelegramBotAPI?
нет, код который ты редактировал на этой библиотеке
Да это и не особо важно,главное правильно составить структуру системы,а как сообщения получать,другой вопрос
xam1816
Янв. 28, 2021 23:51:16
вот еще набросок,пошел спать у нас ночь
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)