Асинхронний Telegram-бот з інтеграцією OpenAI GPT-4o-mini. Підтримує чат, рольові ігри, вікторини, розпізнавання зображень та генерацію резюме.
Функціонал
Головне меню з навігацією
Випадковий цікавий факт через ШІ
Чат з GPT у реальному часі
Рольова гра з відомими особистостями (Кобейн, Гокінг, Ніцше, Єлизавета II, Толкін)
Розпізнавання зображень через GPT Vision
Покроковий конструктор професійного резюме
Персональна статистика використання
Cтек
Python 3.10+
python-telegram-bot (v22+, async)
OpenAI API (GPT-4o-mini, AsyncOpenAI)
SQLite (база даних для статистики)
Rate limiting (захист від спаму)
python-dotenv
Можливості
Per-user ізоляція кожен користувач має окрему історію діалогів
Збереження даних статистика та результати quiz зберігаються в SQLite
Rate limiting захист від перевантаження (10 запитів в хвилину)
Глобальний error handler користувач отримує повідомлення про помилку замість крашу
Проект "Telegram/ChatGPT" Завдання Обов'язкові 0. Винесіть токен в окремий файл. Додайте цей файл до .gitignore.
-
"Випадковий факт" Телеграм-бот повинен обробляти команду /random. При обробці команди він надсилає заздалегідь підготовлене зображення та робить запит до ChatGPT із заздалегідь підготовленим промптом. Відповідь ChatGPT потрібно отримати та передати користувачеві. До повідомлення має бути прикріплена кнопка "Закінчити", натискання на яку працює так само, як команда /start. І кнопка "Хочу ще факт", натискання на яку працює так само, як команда /random
-
"ChatGPT інтерфейс" Телеграм-бот повинен обробляти команду /gpt. При обробці команди він надсилає заздалегідь підготовлене зображення та робить запит до ChatGPT, передаючи йому текст отриманого повідомлення. Відповідь ChatGPT потрібно отримати та передати користувачеві текстовим повідомленням
-
"Діалог з відомою особистістю" Телеграм-бот повинен обробляти команду /talk. При обробці команди бот надсилає заздалегідь підготовлене зображення та пропонує вибір з декількох відомих особистостей, використовуючи кнопки. При натисканні кнопки потрібно встановити промпт обраної особистості. Подальші текстові повідомлення від користувача потрібно передавати ChatGPT та повертати його відповіді користувачеві. До них має бути прикріплена кнопка "Закінчити", натискання на яку працює так само, як команда /start
-
"Квіз" Телеграм-бот повинен обробляти команду /quiz. При обробці команди бот надсилає заздалегідь підготовлене зображення та пропонує вибір з декількох тем, використовуючи кнопки. Після вибору теми, передати запит ChatGPT і, отримавши питання квізу, передати його користувачеві. Наступне текстове повідомлення користувача вважається відповіддю. Його потрібно передати ChatGPT та отримати результат. Результат передати користувачеві з можливістю задати ще питання на ту ж тему, змінити тему або закінчити квіз, за допомогою кнопок. Бот також повинен вести рахунок правильних відповідей та відображати разом з черговим результатом
-
Тема на вибір (опціональні) Вибери дві або більше ідей із запропонованих (або придумай свою!):
"Перекладач"
Бот пропонує вибрати мову, на яку потрібно перекласти текст, використовуючи кнопки. Після вибору мови користувач надсилає текст, який потрібно перекласти. Бот використовує ChatGPT для перекладу тексту та надсилає результат користувачеві. До повідомлення має бути прикріплена кнопка зміни мови та кнопка "Закінчити", натискання на яку працює так само, як команда /start.
"Голосовий ChatGPT"
Бот повинен прийняти голосове повідомлення від користувача. Перевести його в текст та надіслати ChatGPT. Отримавши відповідь, перетворити її на голосове повідомлення та надіслати у вигляді аудіоповідомлення користувачеві.
"Рекомендації щодо фільмів та книг"
Бот пропонує вибрати категорію рекомендацій: фільми, книги, музика. Після вибору категорії бот запитує жанр. Після отримання, формує запит та запитує у ChatGPT рекомендації та надсилає їх користувачеві. До них мають бути прикріплені кнопки:
"Не подобається", яка робить вибраний твір нецікавим. Натискання на кнопку генерує нову відповідь, враховуючи всі нецікаві твори, введені користувачем.
"Закінчити", натискання на яку працює так само, як команда /start.
"Словниковий тренажер"
Бот допомагає користувачеві розширювати словниковий запас іноземної мови. Може надсилати нове слово з перекладом та прикладами використання. При надсиланні слово вважається вивченим. До повідомлення мають бути прикріплені кнопки "Ще слово", "Тренуватися", та "Закінчити". При натисканні на "Тренуватися" бот повинен проводити тест по вивчених словах з валідацією з боку ChatGPT.
Тест повинен представляти собою перебір усіх вивчених слів. Кожне таке слово має бути виведене в повідомленні. Наступне повідомлення користувача вважається перекладом цього слова. Для валідації правильності можна використовувати ChatGPT. В кінці тесту потрібно виводити результат у вигляді кількості правильних відповідей.
"Розпізнавання зображень"
Бот повинен приймати від користувача зображення та передавати його ChatGPT. ChatGPT повинен визначити, що знаходиться на зображенні та описувати в текстовому вигляді. Відповідь передати користувачеві в текстовому повідомленні.
"Допомога з резюме"
Бот запитує у користувача інформацію про освіту, досвід роботи та навички. На основі отриманих даних бот генерує шаблон резюме та надсилає його користувачеві.
Своя тема Якщо з'явилася ідея, яку хочеться реалізувати в проекті, нею можна замінити один із виборчих пунктів. Для валідації зверніться до Ментора.