@vakhrushevee
Учусь в 10-ом классе

Как сделать так, чтобы при регистрации пользователя в телеграмм боте его ID сохранялся в файле только один раз?

import telebot
import requests
import json
from telebot.types import User



bot =telebot.TeleBot('***********')
API = '*************'


@bot.message_handler(commands=['start'])
def start(message):
     with open('id.txt', 'a+') as id:
          print(message.chat.id, file=id)
     bot.send_message(message.chat.id, 'Привет, прежде всего пройди регистрацию:\n/register\n \n❗❗❗Если вы уже проходили регистрацию пропустите этот шаг❗❗❗\n \nВведите название города в котором хотите узнать погоду:') 


@bot.message_handler(commands=['register'])
def register(message): 
     with open('reg_id.txt', 'a+') as reg_id:
          print(message.chat.id, file=reg_id)
     user:User = message.from_user
     with open('users.txt', 'a+') as users:    
          print(f"""
ID: {user.id}
Имя: {user.first_name}
Фамилия: {user.last_name}
Логин: {user.username}
""", file=users)
     bot.send_message(message.chat.id, 'Регистрация завершена!\nТеперь можете узнать погоду, введите название города:')   


@bot.message_handler(commands=['1'])
def mailing(message):
     if message.chat.id == 1641702307:
          for i in open('reg_id.txt', 'r').readlines():
               bot.send_message(i, 'Оставьте отзыв о проекте!\nНе забудьте оставить свой ник!\n@Vakhrushev_E_E')
     else:
          bot.send_message(message.chat.id, 'Команда не может быть выполнена т.к вы не являетесь администратором!') 


@bot.message_handler(content_types=['text'])
def get_waether(message):
    bot.send_message(message.chat.id, 'Подождите секунду!')
    city = message.text.strip().lower()
    temp = requests.get(f'https://api.openweathermap.org/data/2.5/weather?q={city}&appid={API}&units=metric')
    if temp.status_code == 200:
         data = json.loads(temp.text)
         heat = f'Погода за бортом равна:  {data["main"]["temp"]}'
         feels_like = f'Ощущается как:   {data["main"]["feels_like"]}'
         bot.reply_to(message, f'{heat}\n{feels_like}\n \nМожете заново узнать погоду, введите название города:')
    else:
         bot.reply_to(message, 'Неверный формат, попробуйте снова!')


bot.polling(non_stop=True)
  • Вопрос задан
  • 350 просмотров
Решения вопроса 2
AshBlade
@AshBlade
Просто хочу быть счастливым
использовать SQlite (поддержка которого встроена в питон) + индексы навесить на ID пользователя
Ответ написан
@max22765t
Чтобы сохранялся один раз нужно проверять:
:есть ли в файле такой id
:если есть то мы ничего не делаем или пишем: "Такой id уже зарегестрирован"
: если нет то вписываем

пример:
id = "id"

file = open("yourFile.txt", "r")
fileReaded = file.read()
file.close()

if id in fileReaded:
    print("Пользователь по етому id уже зарегестрирован!")
else:
    file = open("yourFile.txt", "a")
    file.write("id")
    file.close()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект