pyTelegramBotAPI

59 просмотраpyTelegramBotAPI
0
0 Комментариев

Здравствуйте уважаемые форумчане! Подскажите как решить такую проблему: Написал небольшой бот для телеграма, который регистрирует данные об автомобиле, введенные пользователем. Бот работает, но только когда пользователи вводят по очереди, а когда одновременно то введеные данные перезаписываются, к примеру: юзер 1 вводит:

рег. номер — 123
марка — AUDI
модель — 100

юзер 2 вводит:

рег. номер — 456
марка — ВАЗ
модель — 2101

результат может быть:

рег. номер — 456
марка — AUDI
модель — 2101

сам код:

import telebot
import config
from time import sleep
from telebot.types import Message

bot = telebot.TeleBot(config.TOKEN)

markup_menu = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
btn_new = telebot.types.KeyboardButton(‘Запись нового авто’)
btn_verify = telebot.types.KeyboardButton(‘Проверка авто’)
markup_menu.add(btn_new, btn_verify)

car_plate = »
car_make = »
car_model = »

@bot.message_handler(commands=[‘start’])
def start(message: Message):
bot.send_message(message.from_user.id, ‘Для начала нажмите необходимую кнопку’, reply_markup=markup_menu)

@bot.message_handler(content_types=[‘text’])
def new_verify(message: Message):
if message.text.lower() == ‘запись нового авто’:
begin_new_car = bot.send_message(message.from_user.id, ‘Введите регистрационный номер:’)
bot.register_next_step_handler(begin_new_car, get_car_plate)

def get_car_plate(message: Message):
global car_plate
car_plate = message.text.upper()
bot.send_message(message.from_user.id, ‘Введите марку авто:’)
bot.register_next_step_handler(message, get_car_make)

def get_car_make(message: Message):
global car_make
car_make = message.text.upper()
bot.send_message(message.from_user.id, ‘Введите модель авто:’)
bot.register_next_step_handler(message, get_car_model)

def get_car_model(message: Message):
global car_model
car_model = message.text.upper()

res = «»»
Р/Н: {}
Марка: {}
Модель: {}
————\n\n»»»
with open(‘cars.txt’, ‘a’, encoding=’utf8′) as car_file:
car_file.write(res.format(car_plate, car_make, car_model))
bot.send_message(message.from_user.id, ‘Записано!’)

while True:
try:
bot.polling(none_stop = True)
except:
sleep(20)

Полагаю что перезаписываются данные в переменных. Получается что нужно для каждого юзера своя переменная, как-то так, не знаю. Подскажите как решить данную проблему, может есть более подходящее решение. Спасибо заранее.


Добавить комментарий

1 Ответы

Python Опубликовано 15.09.2019
0

на высшем месте избавился бы от глобальных переменных и данные писал бы в sqlite

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up

Подпишись на канал!

Новые видеоуроки, книги и полезные статьи для python программистов!