Как получить 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)