A modular chatbot platform with console, web, and Telegram runners.
This repository was used as a practical learning project for junior developers. Instead of working on isolated exercises, contributors worked in a shared codebase and gained experience contributing to a real project.
The commit history shows students contributing real work to a shared application through pull requests, feedback, fixes, and incremental improvements. It highlights student ownership of features and integrations, not just classroom exercises or isolated demos.
Most of the visible work in this repository was built by students through pull requests. That includes plugins, the web and Telegram runners, documentation updates, bug fixes, refactors, and other feature work in the shared codebase.
- plugin development
- web and Telegram runner work
- deployment and Telegram documentation
- bug fixes and usability improvements
- refactoring and cleanup
- test additions and maintenance work
- opening GitHub pull requests
- receiving and applying review feedback
- debugging and fixing issues in an existing codebase
- refactoring code to improve readability and maintainability
- contributing to a shared codebase with real integrations and documentation
- Plugin-based chatbot architecture
- Multiple runners: console, Telegram polling, and web
- Telegram bot integration, webhook support, and local debugging guidance
- Dependency injection and shared services
- In-memory DAL for simple local runs, plus database support through
CONNECTION_STRING - GitHub Actions workflows for build and deployment automation
- Basic test coverage
The repository includes plugins such as:
- calculator
- trivia
- alarm clock
- timers
- list/task management
- count words
- numerology calculator
- date and time tools
- translation
- C#
- .NET
- ASP.NET Core
- Entity Framework Core
- GitHub Actions
- Telegram.Bot
Plugins/- independent chatbot pluginsRunners/ConsoleApp/- local console runnerRunners/TelegramPullRunner/- Telegram polling runnerRunners/WebRunner/- ASP.NET Core web runnerInfrastructure/- dependency injection and plugin loadingServices/- messaging and runner-related servicesDals/,DB/,Shared/Dal/- persistence layer and database accessTestProject/- basic tests
- If
CONNECTION_STRINGis not defined, the app uses an in-memory DAL for local development. - To enable Telegram features, set
TelegramKey. - The app recognizes connection strings in
mysql:...andpostgres://...formats. - Some optional integrations use additional environment variables such as Twilio and translation service settings.
You can deploy the web runner to any hosting environment that supports ASP.NET Core applications.
- Build and publish the web runner:
dotnet publish Runners/WebRunner/WebRunner.csproj -c Release- Deploy the published output from
Runners/WebRunner/bin/Release/net6.0/publish/to your target server or hosting platform. - Configure the required environment variables for the features you want to enable.
- Expose the application over HTTPS if you plan to use Telegram webhooks.
If you want persistence in a deployed environment:
- Provision a MySQL or PostgreSQL database.
- Set
CONNECTION_STRINGin one of the supported formats. - Restart the application and verify it can connect successfully.
- Open Telegram and search for
@BotFather. - Run
/newbot. - Follow the instructions and save the bot token.
To connect the web app to Telegram, open this URL in a browser:
https://api.telegram.org/bot{token}/setWebhook?url={YOUR_WEB_APP_URL}
Example:
https://api.telegram.org/botabc123/setWebhook?url=https://example.com/telegram
If you want to debug Telegram locally, expose your local app with ngrok:
ngrok http --host-header=localhost {PORT}Then use the generated public URL as the webhook target.