pacos2

Multi-modal C# Telegram AI chat bot based on Microsoft.Extensions.AI and Google GenAI

GitHub Stars

2

User Rating

Not Rated

Forks

0

Issues

0

Views

2

Favorites

0

README
Pacos Telegram Bot

master branch - test, build, push, deploy

Pacos is a .NET-based Telegram bot designed to interact in group chats. It leverages generative AI for chat responses and image generation.

The alpaca was scientifically described by Carl Linnaeus in his System of Nature (1758) under the Latin name Camelus pacos.

scr1

Features
  • AI-Powered Chat: Responds to mentions (e.g., "pacos", "пакос") or direct messages using Google's Gemini Pro model. It maintains a chat history for context-aware conversations.
  • Image Generation:
    • Text-to-Image: Generate images from textual descriptions using the !drawx <prompt> command.
    • Image-to-Image: Modify existing images by replying to a message containing an image (or sending an image directly with the command) using !drawx <prompt>.
  • Chat Management:
    • Reset History: Users can clear the bot's memory for a specific chat with the !resetx command.
  • Content Moderation:
    • Word Filter: Filters messages against a list of banned words (defined in banwords.txt).
  • Language Identification: Detects the language of incoming messages to potentially tailor responses (using NTextCat with Core14.profile.xml).
  • Asynchronous Processing: Handles incoming Telegram updates and AI interactions asynchronously using a background task queue to ensure responsiveness.
Core Technologies
  • Framework: .NET (Worker Service)
  • Telegram API: Telegram.Bot library
  • Generative AI (Chat): Microsoft.Extensions.AI with Google's Gemini Pro model (gemini-2.5-pro)
  • Generative AI (Image): Direct integration with Google's Generative AI for image model (gemini-2.0-flash-preview-image-generation)
  • Logging: NLog (configured via nlog.config)
  • Configuration: Standard .NET configuration (e.g., appsettings.json, environment variables)
  • Language Detection: NTextCat
Configuration

The bot requires the following configuration settings, typically provided via environment variables or an appsettings.json file under the Pacos section:

  • TelegramBotApiKey: Your Telegram Bot API token (required).
  • GoogleCloudApiKey: Your Google Cloud API key for accessing generative AI services (required).
  • AllowedChatIds: An array of Telegram chat IDs where the bot is permitted to operate (required).
  • ChatModel: The AI model to use for chat responses (required).
  • ImageGenerationModel: The AI model to use for image generation (required).
  • WebProxy: Optional proxy server URL for network requests.
  • WebProxyLogin: Optional username for proxy authentication.
  • WebProxyPassword: Optional password for proxy authentication.
Setup and Running
  1. Ensure you have the .NET SDK installed.
  2. Configure the required API keys and settings (see Configuration section).
  3. Create banwords.txt (if needed for word filtering) and Core14.profile.xml (for NTextCat language identification) in the application's root directory.
  4. Run the application:
    dotnet run
    
Bot Commands
  • pacos, <message>: Engage in a conversation with the bot.
  • !drawx <prompt>: Generate an image based on the provided text prompt.
  • !drawx <prompt> (replying to an image or with an image): Modify the existing image based on the prompt.
  • !resetx: Clear the bot's chat history for the current chat.
Author Information
Ilia Burakov

C# and ASP.NET developer

Canada

54

Followers

76

Repositories

20

Gists

127

Total Contributions

Top Contributors

Threads