Подскажите пожалуйста, почему пишет 2 id, хотя у меня один только и все боты его пишут и пложение плюс тоже его показывает, но в таблице записывает другой, если я напишу в группе текст, а мой реальной показывает, когда нажму старт в боте.
1 я нажал старт в боте и записался, мой настоящий id, 2 я написал в группе текст, но Id уже другой? последние цифры, 2 id стёр.
API_TOKEN = 'moi_token'
logging.basicConfig(level=logging.INFO)
bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
dp.middleware.setup(LoggingMiddleware())
conn = sqlite3.connect("idusers2.db")
c = conn.cursor()
#Создание таблицы если не сущ.
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER)''')
conn.commit()
conn.close()
class SQLither:
def __init__(self, database):
self.conn = sqlite3.connect(database)
self.c = self.conn.cursor()
def exists_user(self, user_id):
"""Проверка существования пользователя в БД"""
return bool(self.c.execute("SELECT * FROM users WHERE user_id=?", (user_id,)).fetchone())
def add_to_db(self, user_id):
"""Добавление пользователя в БД"""
self.c.execute("INSERT INTO users ('user_id') VALUES(?)", (user_id,))
self.conn.commit()
#db = SQLither("idusers.db")
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
user_id = message.from_user.id
if not db.exists_user(user_id):
#Если пользователя нет в БД - добавить.
db.add_to_db(user_id)
await message.answer("Здравствуйте, {0.first_name}. \nВаш id: {0.id}".format(message.from_user), parse_mode='html')
#await bot.send_message(message.chat.id, '\nТекст.')
@dp.message_handler(content_types=["text"])
async def message_handler(message: types.Message):
user_id = message.from_user.id
if not db.exists_user(user_id):
#Если пользователя нет в БД - добавить.
db.add_to_db(user_id)
db = SQLither("idusers2.db")
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)