Как получить USER ID по никнейму в вводе команды (Python Telebot)

Допустим у нас есть /command @nickname из всего этого оно должно получать USER ID участника. Подскажите пожалуйста, как так сделать?

@bot.message_handler(commands=['command'])
def answer(message):
    command = message.text.split(maxsplit=1)[1] #вот таким образом я получая текст после команды

Как дальше?)


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

Автор решения: Denis Rudnitskiy

Как получить chat_id любого пользователя - я подсказать не смогу, скорее всего подобное реализовать невозможно (поправьте в комментариях, если я не прав?). Но вы можете заносить chat_id и username пользователей, которые запустили ваш бот в словарь или базу данных и уже оттуда извлекать chat_id для ваших потребностей. При перезапуске бота - данные из словаря будут утеряны, так что советую для реального проекта использовать базу данных - думаю sqlite подойдет здесь с головой. Приведу пример со словарем.

import telebot


bot = telebot.TeleBot('token')
users = {}


@bot.message_handler(commands=['start'])
def start(message):
    users.update({message.from_user.username:message.chat.id}) # ключ - username пользователя, значение - id пользователя
    bot.send_message(message.chat.id, 'Твои данные занесены в словарь')


@bot.message_handler(commands=['commands'])
def answer(message):
    #здесь мы ищем по ключу - chat_id пользователя
    try:
        bot.send_message(message.chat.id, users[message.text.split(maxsplit=1)[1]])
    except KeyError:
        bot.send_message(message.chat.id, 'Такого пользователя нет в базе')
        
        
bot.polling(none_stop=True) 
→ Ссылка