Как создавать новый файл при каждом обращении к функции

Делаю телеграм бота на Python. Нужно что бы бот записывал сообщение пользователя в .txt файл. Но при использовании одновременно несколькими пользователями одновременно программа ломается. Вот код:

import telebot

bot = telebot.TeleBot("1181859447:AAF6kJmz8eFSljDs06nZmMSgTx8-dPaU6yg")

@bot.message_handler(commands=['start'])
def privetctive(message):
    sent = bot.send_message(message.chat.id, "Здравствуйте, как я могу к ваv обращаться?")
    bot.register_next_step_handler(sent, Hello)


def Hello(message):
    bot.send_message(message.chat.id,
                     'Здравствуйте, {name}. К кому роду деятельности вы относитесь?'.format(name=message.text))
    doc = open('file.txt', 'w', encoding='utf-8')
    doc.write("Имя заказчика - {imia}\n".format(imia=message.text))

bot.polling()

Я так понял что можно создавать каждому пользователю новый файл. Если кто знает как это делать пожалуйста помогите.


Ответы (1 шт):

Автор решения: D. Violet

почему все так любят записывать в текстовый файл? для тестов ок, проверить пишет ли то, что нужно, но для прода?

когда я учился, тоже боялся слов "БД", "скуль", но чем сложнее, тем интересней для себя, разве нет?

вот вам пример записи в SQLite:

import sqlite3

def commit_db(first, id_tlgrm):
    conn = sqlite3.connect('my_first_db.db')
    cursor = conn.cursor()
    db_data = [(first, id_tlgrm)]
    cursor.executemany("INSERT INTO users VALUES (?, ?)", db_data)  # Запись данных в БД
    conn.commit()  # Сохранение данных в БД


def Hello(message):
    bot.send_message(message.chat.id, '%text%')
    commit_db(message.text, message.chat.id)

UPD:

def Hello(message):
    bot.send_message(message.chat.id, '%text%')
    f = open('file.log', 'a')
    f.write(datetime.now().strftime("%d/%m/%Y %H:%M:%S") + ' ' + str(message.chat.id) + ':' + str(message.text) + '\n')
    f.close()

файл будет дозаписываться

→ Ссылка