Как получить USER ID по никнейму в вводе команды (Python Telebot)
Допустим у нас есть /command @nickname из всего этого оно должно получать USER ID участника. Подскажите пожалуйста, как так сделать?
@bot.message_handler(commands=['command']) def answer(message): command = message.text.split(maxsplit=1)[1] #вот таким образом я получая текст после команды
Как дальше?)
Отслеживать
задан 13 янв 2021 в 12:20
1 1 1 серебряный знак 3 3 бронзовых знака
вам требуется получить chat.id пользователя чей nickname указан в команде?
14 янв 2021 в 15:35
у юзеров есть никнеймы, любого юзера может быть никнейм
14 янв 2021 в 17:31
это понятно, но не является ответом на мой комментарий.
14 янв 2021 в 17:52
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Как получить 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() # ключ - 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)
Как в Telegram узнать username пользователя имея id?
Если речь идет именно об API как таковом, то там есть функция users.getFullUser, которая в качестве параметра принимает id пользователя. Если речь идет об обработке сообщения в хендлере в телеграм-боте с использованием telebot , то username содержится в
message.from_user.username
Отслеживать
ответ дан 13 ноя 2018 в 20:48
25k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
Через message.from_user.username насколько я знаю можно узнать username только если этот пользователь отправит сообщение боту. Решил эту задачу таким способом: bot.get_chat_member(userid, userid) . Полный код:
@bot.message_handler(commands=["getuser"]) def answer(message): if (message.from_user.id == 365156441): userid = int(message.text.split(maxsplit=1)[1]) UsrInfo = bot.get_chat_member(userid, userid).user bot.send_message(365156441, "Id: " + str(UsrInfo.id) + "\nFirst Name: " + str(UsrInfo.first_name) + "\nLast Name: " + str(UsrInfo.last_name) + "\nUsername: @" + str(UsrInfo.username))
Проверкой ‘ if (message.from_user.id == 365156441) ‘ Я проверяю отправлено ли сообщение от меня(То есть эту команду могу выполнить только я), его можно заменить на ваш ид либо на что-то другое(Там проверку в бд админ ли пользователь).
Как телеграмм боту получить id пользователя который нажал /start
Здравствуйте пишу бота на Python- pyTelegramBotApi. Нужно что бы при нажатии юзером на кнопку старт мне пришел его айди. как выполнить такой запрос ?
Отслеживать
задан 9 июн 2018 в 9:56
125 1 1 золотой знак 3 3 серебряных знака 12 12 бронзовых знаков
В случае с ботами, user_id == message.chat.id
10 июн 2018 в 16:02
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
При нажатии юзером кнопки старт происходит отправка боту сообщения с командой ‘start’, а само сообщения содержит информацию, в том числе id юзера, достать который можно например таким хендлером:
@bot.message_handler(commands=['start']) def start(message): user_id = message.from_user.id
Отслеживать
5,728 3 3 золотых знака 21 21 серебряный знак 44 44 бронзовых знака
Как получить id юзера / chat id telebot?
Нужно получить айди юзера (message.chat.id) в переменной, без отправки сообщения. Как это можно сделать?
- Вопрос задан более трёх лет назад
- 19134 просмотра
4 комментария
Простой 4 комментария
А какие у вас декораторы в переменной?
1grand @1grand Автор вопроса
Я имел в виду хэндлер (@bot.message_handler)
1grand, не использовать библиотеку, которая работает через декораторы.
AWEme, сможете обосновать?
Решения вопроса 0
Ответы на вопрос 2

Данил К. @Danya_Violet
body = '\n' \ '--\n' \ ', \n' \ ', '.format(message=message.text, first=message.from_user.first_name, last=message.from_user.last_name, username=message.from_user.username,
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

message.from_user.id правильнее, т.к. в группах message.chat.id будет возвращать ID группы, а не конкретного пользователя. Но если уверены, что дело ограничится только диалогами (личные сообщения), тогда message.chat.id тоже уместен.
@bot.message_handler(commands=['start']) def start_message(message): your_variable = message.from_user.id
