Если вы хотите получить ID
пользователя в другом контексте (например, в другой функции, где нет объекта message
), вам нужно передать этот id
в нужное место:
Способ, которым пользуюсь я - FSM
, можно сохранить id
в хранилище состояний.
async def start(message: types.Message, state: FSMContext):
user_id = message.from_user.id
await state.update_data(user_id=user_id)
await bot.send_message(user_id, f'Ваш ID: {user_id}')
async def get_user_id_from_state(state: FSMContext):
data = await state.get_data()
return data.get("user_id")
Можно сохранить id
в глобальной переменной для использования в других функциях.
user_id = None
async def start(message: types.Message):
global user_id
user_id = message.from_user.id
await bot.send_message(user_id, f'Ваш ID: {user_id}')
def get_user_id():
return user_id
Здесь функция get_user_id
может быть вызвана для получения сохраненного id
.
Вы можете сохранять id
между запусками, его можно записать в базу данных или файл, а затем извлекать по мере необходимости.
async def start(message: types.Message):
user_id = message.from_user.id
with open("user_ids.json", "w") as f:
json.dump({"user_id": user_id}, f)
await bot.send_message(user_id, f'Ваш ID: {user_id}')
def get_user_id_from_file():
with open("user_ids.json", "r") as f:
data = json.load(f)
return data.get("user_id")
Думаю, есть еще куча способов как это сделать