2023-11-01 14:06:34 +03:30

195 lines
6.9 KiB
C#

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("token")
.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("token")
.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("token")
.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("token")
.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("token")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseLoad())
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
private static BotBase GetPhotoBot()
{
var bot = BotBaseBuilder
.Create()
.WithAPIKey("token")
.MiddlewareMessageLoop(
messageLoop =>
messageLoop
.UseAttachments(MessageType.Photo))
.WithStartForm<StartForm>()
.NoProxy()
.DefaultCommands()
.NoSerialization()
.UsePersian()
.Build();
return bot;
}
}