Skip to content
/ botf Public

🦾Make beautiful and clear telegram bots with the asp.net-like architecture!

License

Notifications You must be signed in to change notification settings

deploy-f/botf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BotF

Nuget GitHub CI Telegram Group

Make beautiful and clear telegram bots with the asp.net-like architecture!

BotF has next features:

🤘 long pooling and webhook mode without any changes in the code
😎 very convinient way to work with commands and reply buttons
👆 integrated pagination with buttons
🆔 authentication and role-based authorization
🔥 statemachine for complicated dialogs with users
🕸️ asp.net-like approach to develop bots
⚒️ automatic creating of command menu
🗓️ integrated DateTime picker
📤 auto sending
📲 webapp native support
🚤 good performance

Documentaion

🔜 Documentation is under developement. We will push it here in the readme file soon. Feel free to ask us your questions in community chat in telegram Telegram Group

▶️ There is a good video on youtube https://www.youtube.com/watch?v=hieLnm9wO6s

Install

dotnet add package Deployf.Botf

Example

Put next code into Program.cs file

using Deployf.Botf;

class Program : BotfProgram
{
    // It's boilerplate program entrypoint.
    // We just simplified all usual code into static method StartBot.
    // But in this case of starting of the bot, you should add a config section under "bot" key to appsettings.json
    public static void Main(string[] args) => StartBot(args);

    // Action attribute mean that you mark async method `Start`
    // as handler for user's text in message which equal to '/start' string.
    // You can name method as you want
    // And also, second argument of Action's attribute is a description for telegram's menu for this action
    [Action("/start", "start the bot")]
    public void Start()
    {
        // Just sending a reply message to user. Very simple, isn't?
        Push($"Send `{nameof(Hello)}` to me, please!");
    }

    [Action(nameof(Hello))]
    public void Hello()
    {
        Push("Hey! Thank you! That's it.");
    }

    // Here we handle all unknown command or just text sent from user
    [On(Handle.Unknown)]
    public async Task Unknown()
    {
        // Here, we use the so-called "buffering of sending message"
        // It means you dont need to construct all message in the string and send it once
        // You can use Push to just add the text to result message, or PushL - the same but with new line after the string.
        PushL("You know.. it's very hard to recognize your command!");
        PushL("Please, write a correct text. Or use /start command");

        // And finally send buffered message
        await Send();
    }
}

And replace content of appsettings.json with your bot username and token:

{
  "botf": "123456778990:YourToken"
}

And that's it! Veeery easy, isn't?
Just run the program :)

Other examples you can find in /Examples folder.

Hosting

After you develop your bot, you can deploy it to our hosting: deploy-f.com