By obrizan on Травень 9, 2025 · Прочитати цю публікацію іншими мовами: Russian English
У цьому уроці ви навчитесь створювати Telegram-бота, який відповідає на ваші запитання за допомогою штучного інтелекту — моделі ChatGPT від OpenAI. Ми крок за кроком:
Зміст:
Щоб ваш бот міг звертатись до ChatGPT, вам потрібен API-ключ від OpenAI. Для цього:
sk-proj-abc1234567890...
Обов’язково збережіть цей ключ у безпечному місці. Він більше не відображатиметься повторно.
Детальніше про роботу з OpenAI API читайте в уроці: "Як працювати з ChatGPT за допомогою OpenAI API та Python"
/newbot
, та надати наступну інформацію:bot
(наприклад, my_gpt_bot
).
1234567890:AdfgqAAWEGaASDqwefeasefadfaweAEFAA
. ⚠️ Зверніть увагу:
Перейдемо до практики програмування.
main.py
та додайте у нього базовий код телеграм-бота:import asyncio
import logging
import sys
from aiogram import Bot, Dispatcher, html
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from aiogram.filters import CommandStart
from aiogram.types import Message
# Токен бота можна отримати за посиланням https://t.me/BotFather
# ВАЖЛИВО: вкажіть ваш токен
TOKEN = "1234567890:AdfgqAAWEGaASDqwefeasefadfaweAEFAA"
dp = Dispatcher()
@dp.message(CommandStart())
async def command_start_handler(message: Message) -> None:
await message.answer(f"Hello, {html.bold(message.from_user.full_name)}!")
@dp.message()
async def echo_handler(message: Message) -> None:
try:
# Надсилаємо копію отриманого повідомлення
await message.send_copy(chat_id=message.chat.id)
except TypeError:
# Але не всі типи підтримують копіювання, тому потрібно це обробити
await message.answer("Nice try!")
async def main() -> None:
# Ініціалізуємо екземпляр бота з властивостями за замовчуванням, які будуть передані до всіх API викликів
bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
# Та запускаємо обробку подій
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
asyncio.run(main())
ВАЖЛИВО: у рядку TOKEN = "1234567890:AdfgqAAWEGaASDqwefeasefadfaweAEFAA"
вкажіть ваш токен від Телеграм бота, який ви отримали на попередньому кроці.
Цей код використовує бібліотеку aiogram — сучасний повністю асинхронний фреймворк для Telegram Bot API, написаний на Python із використанням asyncio та aiohttp. Треба встановити цю бібліотеку в оточення вашого проєкту. Для цього відкриваємо Terminal у PyCharm та пишемо команду:
pip install aiogram
Після виконнання цієї команди ми повинні отримати повідомлення Successfully installed aiogram-3.20.0
, як показано на зображенні.
Запускаємо файл main.py
за допомогою кнопки Debug (зелена комаха), або за допомогою інструкції в терміналі: python main.py
.
В терміналі PyCharm ми отримаємо повідомлення Run polling for bot @obrizan_ai_assistant_bot id=7893124402 - "Obrizan's AI Assistant"
, як показано на зображені нижче. Це означає, що Телеграм-бот готов приймати повідомлення. (Назва та ідентифікатор бота в вас будуть іншими).
Відкрийте вашого бота в Телеграмі, виконайте команду /start
. Напишіть будь-яке повідомлення. Ваш бот повинен відповідати вам таким самим повідомленням:
🚀 Вітаю! Якщо ви бачите відповіді бота, значить інтеграція з ним правильно налаштована.
На цьому кроці ми підключимо ChatGPT за домогою OpenAI API, щоб на ваші повідомлення відповідав штучний інтелект. Важливо: що для цього кроку треба отримати OpenAI API ключ та встановили бібліотеку OpenAI (pip install openai
) як вказано в туторіалі "Як працювати з ChatGPT за допомогою OpenAI API та Python"
Треба модифікувати файл main.py
наступним чином:
# ВАЖЛИВО: вкажіть ваш API-ключ
client = AsyncOpenAI(
api_key="sk-proj-ieqbTxAWEF0GDSgfv4K0m2..._3sROehQhz4afQWAWEASDFt9"
)
def echo_handler(message: Message)
;def openai_handler(message: Message)
, у якому ми отримуємо запит від користувача, пересилаємо його до ChatGPT за домогою OpenAI API (метод client.responses.create(...)
), а після отримання відповіді від ChatGPT пересилаємо її користувачу у Telegram (метод message.answer(...)
):@dp.message()
async def openai_handler(message: Message) -> None:
# Пересилаємо запит користувача до ChatGPT
response = await client.responses.create(
model="gpt-4o-mini",
instructions="Answer in a plain text without formatting.",
input=message.text
)
try:
# Пересилаємо відповідь ChatGPT користувачу
await message.answer(response.output_text)
except TypeError:
await message.answer("Can't process this request!")
Остаточна версія файлу main.py
повинна виглядати наступним чином:
import asyncio
import logging
import sys
from os import getenv
from aiogram import Bot, Dispatcher, html
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from aiogram.filters import CommandStart
from aiogram.types import Message
from openai import AsyncOpenAI
# Токен бота можна отримати за посиланням https://t.me/BotFather
# ВАЖЛИВО: вкажіть ваш токен
TOKEN = "1234567890:AdfgqAAWEGaASDqwefeasefadfaweAEFAA"
dp = Dispatcher()
# ВАЖЛИВО: вкажіть ваш API-ключ
client = AsyncOpenAI(
api_key="sk-proj-ieqbTxAWEF0GDSgfv4K0m2..._3sROehQhz4afQWAWEASDFt9"
)
@dp.message(CommandStart())
async def command_start_handler(message: Message) -> None:
await message.answer(f"Hello, {html.bold(message.from_user.full_name)}!")
@dp.message()
async def openai_handler(message: Message) -> None:
# Пересилаємо запит користувача до ChatGPT
response = await client.responses.create(
model="gpt-4o-mini",
instructions="Answer in a plain text without formatting.",
input=message.text
)
try:
# Пересилаємо відповідь ChatGPT користувачу
await message.answer(response.output_text)
except TypeError:
await message.answer("Can't process this request!")
async def main() -> None:
bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
asyncio.run(main())
Запускаємо файл main.py
за допомогою кнопки Debug (зелена комаха), або за допомогою інструкції в терміналі: python main.py
. Йдемо перевіряти спілкування з ChatGPT через телеграм-бота:
👏 Вітаю! Ви створили власного чатбота з функціями штучного інтеллекту!
Sign in to leave a comment.
← Back to blog