Привет, Хабр!
Сегодня я хочу рассказать о создании простого, но полезного пет-проекта — Telegram-бота, который помогает пользователям улучшать их английский с помощью GPT-4. Проект отлично подойдет для начинающих разработчиков, так как использует современный стек технологий и имеет понятную архитектуру.
Что умеет бот?
Исправляет грамматические ошибки
Улучшает стилистику предложений
Делает речь более естественной, приближенной к носителям языка
Объясняет внесенные правки
Поддерживает разные стили общения (формальный, неформальный)
Технологический стек
.NET 9.0 — современная и производительная платформа
Telegram.Bot SDK — официальный SDK для работы с Telegram API
OpenAI API — для взаимодействия с GPT-4
PostHog — аналитика использования бота
Sentry — отслеживание ошибок
Структура проекта
KakikataShogun.Bot/
├── MessageBuilders/ # Построители сообщений
├── Handlers/ # Обработчики событий
├── Interfaces/ # Интерфейсы
└── Program.cs # Точка входа
Пошаговая реализация
1. Создание проекта
dotnet new console -n KakikataShogun.Bot
cd KakikataShogun.Bot
2. Установка зависимостей
dotnet add package Telegram.Bot
dotnet add package OpenAI
dotnet add package PostHog
dotnet add package Sentry
3. Реализация базового функционала
Главным компонентом является IMessageBuilder, который обрабатывает сообщения:
internal interface IMessageBuilder
{
string CommandPattern { get; }
Task<string> BuildMessageAsync(string message, CancellationToken cancellationToken);
}
Основная логика коррекции текста находится в DefaultMessageBuilder:
internal class DefaultMessageBuilder(ChatClient openAIClient) : IMessageBuilder
{
public string CommandPattern => "default";
public async Task<string> BuildMessageAsync(string message, CancellationToken cancellationToken)
{
var completion = await openAIClient.CompleteChatAsync(
@"You are an AI language assistant specializing in American English..."
);
return completion.Content;
}
}
4. Настройка DI и конфигурации
В Program.cs настраиваем все зависимости:
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddHostedService<TelegramBotHostedService>();
services.AddTransient<ITelegramBotUpdateHandler, TelegramBotUpdateHandler>();
// ... другие сервисы
})
.Build();
Что получилось в итоге?
Современное приложение с чистой архитектурой
Использование паттернов проектирования (Factory, Builder)
Асинхронная обработка сообщений
Мониторинг ошибок и аналитика
Простой деплой на Linux-сервер
Полезные советы для начинающих
Начните с минимального функционала
Используйте современные практики и инструменты
Добавьте логирование с самого начала
Пишите чистый, поддерживаемый код
Используйте GitHub для версионирования
Заключение
Этот проект — отличный способ познакомиться с:
Разработкой ботов для Telegram
Интеграцией с OpenAI API
Современной разработкой на .NET
Основами CI/CD
Мониторингом приложений
Ссылка на бота: https://t.me/kakikatabot
Весь код проекта доступен на GitHub: https://github.com/paulbuzakov/kakikatabot
Буду рад, если вы поддержите проект звездочкой ⭐️ и подпишетесь на мой профиль на GitHub!