[DOCS] Write examples for middleware message loop

This commit is contained in:
AmirAbbas 2023-11-01 14:00:31 +03:30
parent 365845f832
commit 12c3e66fb8
3 changed files with 243 additions and 1 deletions

View File

@ -0,0 +1,47 @@
using TelegramBotBase.Base;
using TelegramBotBase.Form;
internal sealed class StartForm : FormBase
{
public override async Task PreLoad(MessageResult message)
{
await this.Device.Send("PreLoad");
await Task.Delay(200);
}
public override async Task Load(MessageResult message)
{
await this.Device.Send("Load");
await Task.Delay(200);
}
public override async Task Edited(MessageResult message)
{
await this.Device.Send("Edited");
await Task.Delay(200);
}
public override async Task Action(MessageResult message)
{
await this.Device.Send("Action");
await Task.Delay(200);
}
public override async Task SentData(DataResult data)
{
await this.Device.Send("SentData");
await Task.Delay(200);
}
public override async Task Render(MessageResult message)
{
await this.Device.Send("Render");
await Task.Delay(200);
}
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>

View File

@ -0,0 +1,195 @@
using Telegram.Bot.Types.Enums;
using TelegramBotBase;
using TelegramBotBase.Builder;
using TelegramBotBase.MessageLoops.Extensions;
public class Program
{
private static async Task Main(string[] args)
{
var bot = GetPhotoBot();
await bot.Start();
Console.WriteLine("Bot started :)");
Console.ReadLine();
}
/// <summary>
/// Creates a bot with middleware message loop and authentication for admin user
/// </summary>
private static BotBase GetAdminBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("6989687640:AAFGnjKCa9OOpVyVAYuSpt-axjCHKWpA0sI")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.Use(async (container, next) =>
{
var updateResult = container.UpdateResult;
if (updateResult.Message is not null)
{
if (updateResult.Message.From is not null)
{
var fromId = updateResult.Message.From.Id;
if (fromId == 1)
{
await next();
}
}
}
return;
})
.UseValidUpdateTypes(
UpdateType.Message,
UpdateType.EditedMessage,
UpdateType.CallbackQuery)
.UseBotCommands()
.UseForms())
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
/// <summary>
/// Creates a bot with middleware message loop for handle inline queries
/// </summary>
private static BotBase GetInlineQueryBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("6989687640:AAFGnjKCa9OOpVyVAYuSpt-axjCHKWpA0sI")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseValidUpdateTypes(UpdateType.InlineQuery)
.Use(async (container, next) =>
{
var query = container.UpdateResult.RawData.InlineQuery.Query;
if (!string.IsNullOrWhiteSpace(query))
{
// logic
await next();
}
return;
}))
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
/// <summary>
/// Creates a bot with middleware message loop like form base message loop
/// </summary>
private static BotBase GetFormBaseBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("6989687640:AAFGnjKCa9OOpVyVAYuSpt-axjCHKWpA0sI")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseValidUpdateTypes(
UpdateType.Message,
UpdateType.EditedMessage,
UpdateType.CallbackQuery)
.UseBotCommands()
.UseForms())
// OR instead of UseForms
// .UsePreLoad()
// .UseLoad()
// .UseAllAttachments()
// .UseActions()
// .UseRender()
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
/// <summary>
/// Creates a bot with middleware message loop like form base message loop
/// </summary>
private static BotBase GetFullBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("6989687640:AAFGnjKCa9OOpVyVAYuSpt-axjCHKWpA0sI")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseBotCommands()
.UseForms())
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
/// <summary>
/// Creates a bot with middleware message loop like minimal message loop
/// </summary>
private static BotBase GetMinimalBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("6989687640:AAFGnjKCa9OOpVyVAYuSpt-axjCHKWpA0sI")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseLoad())
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
private static BotBase GetPhotoBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("6989687640:AAFGnjKCa9OOpVyVAYuSpt-axjCHKWpA0sI")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseAttachments(MessageType.Photo))
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
}