/StrBot

My game bot including big dotnet framework for messengers

Primary LanguageC#

StrBot

This repo contains my game, currently developing for telegram and for Yandex.Alice in the future probably. Core concept is in development and for a while i'm working on periphery around bot.a

Dependencies

Bot is developed with .NET Core 3.1. But to run it you will be required to have RabbitMQ server and MongoDB. All configuration could be found in appsettings. To test it in Telegram you will ned a telegram bot token.

Projects

A lot of projects, yeah? :)

MongoDB.Bson.FSharp

This one contains some stuff to connect F# with MongoDB. (Not my code tbh)

YogurtTheBot.Alice

This project contains web server to run Yandex.Alice client

YogurtTheBot.Game.Core.Controllers

This project contains Controllers API for core. So it lets build some hierarchy similar to something between ASP.NET controllers and stack-based screens model.

YogurtTheBot.Game.Core.Controllers.Autofac

This project contains some extensions to easily integrate YogurtTheBot.Game.Core.Controllers with Autofac

YogurtTheBot.Game.Core.Controllers.Language

My own formal grammatics parser. So I decided that Irnoy and FParsec would be too complex for a game and wrote my own, but simplier. Maybe I will migrate to FParsec or Irony someday.

YogurtTheBot.Game.Core.Controllers.Language.Tests

Tests for language project

YogurtTheBot.Game.Core

Core of the messaging mechanism. Have a bit of abstractions and localization stuff.

YogurtTheBot.Game.Data

Core models and MongoDB repositories.

YogurtTheBot.Game.Logic.Engine

Game engine. Core of the very game. Contains models and connected functions.

YogurtTheBot.Game.Logic.Engine.Tests

Game engine tests. Currently there is only one test which tests default levels.

YogurtTheBot.Game.Logic

Game controllers.

YogurtTheBot.Game.Server

Console server.

YogurtTheBot.Game.Server.RabbitMq

Abstractions of server to work with rabbitmq.

YogurtTheBot.Telegram.Polling

Telegram client.

Running

Run server and client in the same time to launch everything.