Почему я получаю ошибку "Chat not found" при попытке получить информацию о пользователе по юзернейму в Telegram боте?
Я пишу бота для Telegram на Python с использованием библиотеки python-telegram-bot. Бот должен обрабатывать команды и предоставлять информацию о пользователях на основе их юзернеймов. Вот код, который я использую для получения информации о пользователе по юзернейму:ʼ`
import os
from telegram import Update
from telegram.ext import (
Application,
CommandHandler,
CallbackContext
)
TOKEN = 'YOUR_TOKEN_HERE'
TEMP_PHOTO_PATH = 'temp.jpg'
async def start(update: Update, context: CallbackContext) -> None:
await update.message.reply_text('Здравствуйте! Отправьте мне команду /info с юзернеймом, чтобы я мог показать информацию об этом пользователе.')
async def info(update: Update, context: CallbackContext) -> None:
if not context.args:
await update.message.reply_text('Пожалуйста, укажите юзернейм в формате /info @username')
return
username = context.args[0]
if not username.startswith('@'):
await update.message.reply_text('Пожалуйста, укажите корректный юзернейм в формате /info @username')
return
try:
user = await context.bot.get_chat(username)
user_first_name = user.first_name
user_last_name = user.last_name if user.last_name else 'Не указано'
if os.path.exists(TEMP_PHOTO_PATH):
os.remove(TEMP_PHOTO_PATH)
temp_photo_path = None
user_photos = await context.bot.get_user_profile_photos(user.id)
if user_photos.total_count > 0:
photo_file = await user_photos.photos[0][-1].get_file()
await photo_file.download_to_drive(TEMP_PHOTO_PATH)
temp_photo_path = TEMP_PHOTO_PATH
response_message = (
f"Имя: {user_first_name}\n"
f"Фамилия: {user_last_name}\n"
)
await update.message.reply_text(response_message)
# Отправка фото, если оно есть
if temp_photo_path:
with open(temp_photo_path, 'rb') as photo:
await context.bot.send_photo(chat_id=update.message.chat_id, photo=photo)
except Exception as e:
await update.message.reply_text(f'Не удалось получить информацию о пользователе: {str(e)}')
def main() -> None:
application = Application.builder().token(TOKEN).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("info", info))
application.run_polling()
if __name__ == '__main__':
main()
`