Options и extension points¶
Здесь перечислены основные configuration и replacement APIs.
Telegram bot options¶
builder.Services.AddTelegramBot(options =>
{
options.Token = token;
options.BotUsername = "my_bot";
options.BaseUrl = "https://api.telegram.org";
options.Defaults.ParseMode = TelegramParseMode.Html;
options.RoleFilter.CacheEnabled = true;
options.RoleFilter.CacheTtl = TimeSpan.FromSeconds(30);
});
AddTelegramBot(...) конфигурирует framework-level Telegram services и underlying client.
Client options¶
services.AddTelegramClient(options =>
{
options.Token = token;
options.BotUsername = "my_bot";
options.BaseUrl = "https://api.telegram.org";
});
Используй это для client-only applications.
Long polling options¶
builder.Services.AddLongPolling(options =>
{
options.TimeoutSeconds = 30;
options.Limit = 100;
options.AllowedUpdates = TelegramAllowedUpdates.Auto;
});
Webhook options¶
builder.Services.AddWebhook(options =>
{
options.Path = "/telegram/webhook";
options.SecretToken = secret;
});
Raw long polling options¶
var options = new TelegramRawLongPollingOptions
{
TimeoutSeconds = 30,
Limit = 100,
AllowedUpdates = ["message", "callback_query"]
};
Raw webhook options¶
using Microsoft.AspNetCore.Http;
app.MapTelegramWebhook(
"/telegram/raw",
handler,
options =>
{
options.SecretToken = secret;
options.InvalidPayloadStatusCode = StatusCodes.Status400BadRequest;
options.SecretTokenFailureStatusCode = StatusCodes.Status401Unauthorized;
});
Replacement APIs¶
Core:
services.AddUpdateDispatcher<MyDispatcher>();
services.AddUpdateSource<MySource>();
services.AddUpdateMiddleware<MyMiddleware>();
services.AddSingletonUpdateMiddleware<MyStatelessMiddleware>();
services.AddDefaultUpdateRateLimiting();
services.AddUpdateRateLimiter<MyLimiter>();
State:
services.AddStateStore<MyStateStore>();
services.AddStateDataStore<MyStateDataStore>();
services.AddStateDataSerializer<MySerializer>();
services.AddStateHistoryStore<MyHistoryStore>();
services.AddStateKeyFactory<MyStateKeyFactory>();
Telegram framework:
services.AddCallbackDataSerializer<MyCallbackSerializer>();
services.AddTelegramChatMemberStatusResolver<MyResolver>();
services.AddTelegramChatMemberStatusCache<MyCache>();
services.AddAutoCallbackAnswer();
Telegram client:
services.AddTelegramClient<MyClient>();
services.AddTelegramTransport<MyTransport>();
services.AddTelegramRequestExecutor<MyExecutor>();
services.AddTelegramHttpTransport(httpClient);
services.AddTelegramJsonOptions(options => { });
services.AddDeepLinkPayloadSerializer<MySerializer>();
Рекомендации¶
Replacement points заменяй только когда приложение владеет behavior. Держи defaults, пока нет конкретной причины их менять.