как получить 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 шт):
Во-первых, нет абсолютно никакого смысла объявлять глобальную переменную 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())