мне нужно из юзернейма получить айди (числовой), например человек пишет
.айди @koctekmayn
а бот выдает 6279972467
как это сделать?
+ у некоторых людей нет юза, и когда ты их упоминаешь, то пишется просто их имя, поэтому грубо говоря мне нужно получить не из юза а из упоминания
message.from_user.id - для сообщений
call.from_user.id - для коллов
Например
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
if message.text == ".id":
msg = "Ваш id: "+message.from_user.id
bot.send_message(message.chat.id, msg)
Такой простой скрипт выведет ID пользователя, который написал .id.
Надеюсь справишься дальше сам, не стал именно твою задачу решать
Да, вариант с записью в БД тут лучший вариант. Я в некотором роде также выкручиваться. Как только человек использовал бота, я сразу ловил его id и записывал. Ну и в другом случае, давал некие права человеку, если он обращался к борту из определенного чата, записывая его id и устанавливал права
Можно делать запись по последнему известному id по юзернейму. Условно человек обратился к борту и произошла запись его id-username, а после при запросе по логину выдавать id, если не найден, то уже выдавать ошибку, что id неизвестен
fertetretertretre, или так. Не уверен можно ли получить список всех, кто пользуется ботом, но если можно, то по идее через это можно получить id по актуальному юзернейму, иначе только через сообщения пользователя. В твоём случае id по ссылке на сообщение пользователя
При вызове команды /start записывайте в БД user_id и username пользователя.
А при вызове команды /айди ищите в БД переданный в команде юзернейм.
Всё просто =)