как получить id пользователя телеграм и записать его в переменную

По задумке бот записывает id пользователя в переменную userr_id и отправляет в ответ на команду /start. Не работает. бот молчит в ответ. на остальные соо отвечает по задумке как надо(в коде внизу их не показал). вопрос: как получить айдишник пользователя и записать его в переменную для последующей отправки или внесения в БД? код следующий:

import asyncio
import sqlite3
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command
# Объект бота
bot = Bot(token='токен')
# Диспетчер
dp = Dispatcher()


# Хэндлер на команду /start
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    global userr_id
    userr_id = message.from_user.id
    await message.answer(userr_id)


async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

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

Автор решения: Ben Puls

Во-первых, нет абсолютно никакого смысла объявлять глобальную переменную userr_id.

Во-вторых, метод message.answer() ожидает аргумент text с типом str, т.е. строка, а переменная userr_id возвращает данные с типом int, т.е. целое число, из-за этого не происходит отправка сообщения. Для того чтобы исправить данную ошибку достаточно написать str(userr_id) в методе message.answer(). Тогда ответ отправится.

Результат:

import asyncio
import sqlite3
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command
# Объект бота
bot = Bot(token='токен')
# Диспетчер
dp = Dispatcher()


# Хэндлер на команду /start
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    userr_id = message.from_user.id
    # код для записи id пользователя в базу данных
    await message.answer(str(userr_id))


async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())
→ Ссылка