Задать вопрос
@aygizyulbarisov
Учусь программированию

Как сделать так, чтобы бот сохранил id в текстовом документе только один раз?

Пользуюсь библиотекой pyTelegramBotAPI

Суть вопроса:
У меня есть код который сохраняет id пользователя в .txt документ при нажатие команды /start.
Я нажал /start, бот мой id сохранил в .txt , и когда нажимаю второй раз, бот снова мой id сохраняет. То есть получается два id. Нажму на /start 10 раз, бот запишет мой id 10 раз.
Мне бы хотелось что бы бот одинаковые id не сохранял. Как это сделать? Внизу указываю код и скрин .txt документа:
@bot.message_handler(commands=['start'])
def start(message):
   
    file = open('user.txt', 'a+')
    file.write(f'{message.from_user.id}\n')
    file.close()


На скрине ввидно что я нажал на /start 6 раз и он записал меня 6 раз. Мне нужно 1 раз даже хоть нажму на /start 100 раз.63c6e78ad37d7171974984.jpeg
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@dima20155
you don't choose c++. It chooses you
Проверьте, что в файле уже записан id пользователя
with open("user.txt", "r+") as user_file:
    if str(user_id) not in user_file.read().split("\n"):
        user_file.write(f'{message.from_user.id}\n')


Или использовать готовое решение, например, sqlalchemy + sqlite (тоже локальная база данных будет)
Ответ написан
@aygizyulbarisov Автор вопроса
Учусь программированию
Полный ответ тут:
@bot.message_handler(commands=['start'])
def start(message):
    with open("user.txt", "r+") as user_file:
        if str(message.from_user.id) not in user_file.read().split("\n"):
            user_file.write(f'{message.from_user.id}\n')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы