Найти - Пользователи
Полная версия: pyTelegramBotAPI ошибка
Начало » Python для новичков » pyTelegramBotAPI ошибка
1 2 3 4
xam1816
Вы работаете с автопарком или конкретным водителем?

Допустим я водила,работаю на автопарк,у меня есть ваш бот.У меня сломался терминал,я жму в чате /help,
выбираю на клавиатуре неисправен терминал,все.Бот меня определяет по chat_id,ищет меня в базе данных,где будут и номер маршрута???,а вдруг он поменяется,и номер автобуса???? может поменяться,и телефон,????,если все это вбивать каждый раз,уже не эффективно

Логичнее если сообщение будет отправлять сам автопарк,через своего бота,который знает все про водителя,он же у них в базе данных, и вам сразу будет отправлять нужные данные.Ведь платит автопарк? или водитель?
numarcon
xam1816
Вы работаете с автопарком или конкретным водителем?Допустим я водила,работаю на автопарк,у меня есть ваш бот.У меня сломался терминал,я жму в чате /help,выбираю на клавиатуре неисправен терминал,все.Бот меня определяет по chat_id,ищет меня в базе данных,где будут и номер маршрута???,а вдруг он поменяется,и номер автобуса???? может поменяться,и телефон,????,если все это вбивать каждый раз,уже не эффективноЛогичнее если сообщение будет отправлять сам автопарк,через своего бота,который знает все про водителя,он же у них в базе данных, и вам сразу будет отправлять нужные данные.Ведь платит автопарк? или водитель?
С автопарком работаем. 6 автопарков.
numarcon
Водитель связывается со своим диспетчером. Диспетчер отправляет заявку через телеграмм бот. Вводит данные:
1. Выбирает свой автопарк
2. Выбирает причину поломки
3. Вводит номер маршрута автобуса
4. Вводит ГРНЗ автобуса
5. Вводит телефон номер водителя(для связи наших мастеров с водители)

Я эту задачу через вордпресс решил, через формы. И даже приложение для андройда сделал из сайта. Но через сайт ответ идет по почте, что совсем не удобно…
xam1816
Тогда я диспетчер автопарка, и должен заполнить форму в чате бота:

-описание неисправности(причину ищет ремонтник)
-номер маршрута
-номер автобуса
-телефон для связи с водителем

кнопка подтверждение

Бот определяет автопарк по chat_id и ищет в базе данных этот автопарк,там уже в базе данных видно и название клиента ,и телефоны, и сколько денег должены, и история ремонтов и тд и тп. Бот подготавливает данные в приемлемом виде,отправляет в ваш чат,профит!!!
numarcon
xam1816
Тогда я диспетчер автопарка, и должен заполнить форму в чате бота:-описание неисправности(причину ищет ремонтник)-номер маршрута-номер автобуса-телефон для связи с водителемкнопка подтверждениеБот определяет автопарк по chat_id и ищет в базе данных этот автопарк,там уже в базе данных видно и название клиента ,и телефоны, и сколько денег должены, и история ремонтов и тд и тп. Бот подготавливает данные в приемлемом виде,отправляет в ваш чат,профит!!!
Деньги не платят. Устранение неполадок бесплатно. А так все верно
xam1816
Тогда еще компоненты

-это класс описывающий автопарк
результат = хранение переменных chat_id,наименование,

- словарь {chat_id : Автопарк()}
результат = хранение ассоциаций с экземплярами класса Автопарк

-функция регистрации Автопарка
результат = заполнение словаря Автопарков

Реализуем пока это


xam1816
Вот набросок…дайте комментарии пжлста кто опытный,
 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
xam1816
Вот набросок…дайте комментарии пжлста кто опытный,
Это не на pyTelegramBotAPI?
xam1816
numarcon
Это не на pyTelegramBotAPI?
нет, код который ты редактировал на этой библиотеке
Да это и не особо важно,главное правильно составить структуру системы,а как сообщения получать,другой вопрос
xam1816
вот еще набросок,пошел спать у нас ночь
 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)
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