* Added missing summaries
This commit is contained in:
@@ -100,7 +100,13 @@ public class ImplicitHandlerBuilderExtensionsGenerator : IIncrementalGenerator
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
usings.UnionAdd(classDeclaration.FindAncestor<CompilationUnitSyntax>().Usings, UsingEqualityComparer);
|
usings.UnionAdd(classDeclaration.FindAncestor<CompilationUnitSyntax>().Usings, UsingEqualityComparer);
|
||||||
MethodDeclarationSyntax targeter = FindTargetterMethod(targetters, classDeclaration);
|
MethodDeclarationSyntax? targeter = FindTargetterMethod(targetters, classDeclaration);
|
||||||
|
|
||||||
|
if (targeter == null)
|
||||||
|
{
|
||||||
|
debugExport.AppendLine("Targetter not found");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (classDeclaration.ParameterList != null && classDeclaration.BaseList != null)
|
if (classDeclaration.ParameterList != null && classDeclaration.BaseList != null)
|
||||||
{
|
{
|
||||||
@@ -227,7 +233,7 @@ public class ImplicitHandlerBuilderExtensionsGenerator : IIncrementalGenerator
|
|||||||
private static IEnumerable<ConstructorDeclarationSyntax> GetConstructors(ClassDeclarationSyntax classDeclaration)
|
private static IEnumerable<ConstructorDeclarationSyntax> GetConstructors(ClassDeclarationSyntax classDeclaration)
|
||||||
=> classDeclaration.Members.OfType<ConstructorDeclarationSyntax>().Where(ctor => ctor.Modifiers.HasModifiers("public"));
|
=> classDeclaration.Members.OfType<ConstructorDeclarationSyntax>().Where(ctor => ctor.Modifiers.HasModifiers("public"));
|
||||||
|
|
||||||
private static MethodDeclarationSyntax FindTargetterMethod(Dictionary<string, MethodDeclarationSyntax> targeters, ClassDeclarationSyntax classDeclaration)
|
private static MethodDeclarationSyntax? FindTargetterMethod(Dictionary<string, MethodDeclarationSyntax> targeters, ClassDeclarationSyntax classDeclaration)
|
||||||
{
|
{
|
||||||
if (targeters.TryGetValue(classDeclaration.Identifier.ValueText, out MethodDeclarationSyntax targeter))
|
if (targeters.TryGetValue(classDeclaration.Identifier.ValueText, out MethodDeclarationSyntax targeter))
|
||||||
return targeter;
|
return targeter;
|
||||||
@@ -235,7 +241,7 @@ public class ImplicitHandlerBuilderExtensionsGenerator : IIncrementalGenerator
|
|||||||
if (classDeclaration.BaseList != null && targeters.TryGetValue(classDeclaration.BaseList.Types.ElementAt(0).Type.ToString(), out targeter))
|
if (classDeclaration.BaseList != null && targeters.TryGetValue(classDeclaration.BaseList.Types.ElementAt(0).Type.ToString(), out targeter))
|
||||||
return targeter;
|
return targeter;
|
||||||
|
|
||||||
throw new TargteterNotFoundException();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SyntaxTriviaList BuildExtensionXmlDocTrivia(ClassDeclarationSyntax classDeclaration, ParameterListSyntax methodParameters)
|
private static SyntaxTriviaList BuildExtensionXmlDocTrivia(ClassDeclarationSyntax classDeclaration, ParameterListSyntax methodParameters)
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>Telegartor.RedisStateStorage</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:Telegrator.States.RedisStateStorage">
|
||||||
|
<summary>
|
||||||
|
Provides a Redis-based implementation of the <see cref="T:Telegrator.Core.States.IStateStorage"/> interface.
|
||||||
|
Serializes state objects to JSON format before storing them in the Redis database.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.RedisStateStorage.#ctor(StackExchange.Redis.IConnectionMultiplexer)">
|
||||||
|
<summary>
|
||||||
|
Provides a Redis-based implementation of the <see cref="T:Telegrator.Core.States.IStateStorage"/> interface.
|
||||||
|
Serializes state objects to JSON format before storing them in the Redis database.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.RedisStateStorage.SetAsync``1(System.String,``0,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.RedisStateStorage.GetAsync``1(System.String,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.RedisStateStorage.DeleteAsync(System.String,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
@@ -769,6 +769,33 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<param name="updateTypes"></param>
|
<param name="updateTypes"></param>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:Telegrator.Annotations.StateAttribute`2">
|
||||||
|
<summary>
|
||||||
|
Attribute for filtering updates where resolved state matches target value.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TKey"></typeparam>
|
||||||
|
<typeparam name="TValue"></typeparam>
|
||||||
|
<param name="value"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Annotations.StateAttribute`2.#ctor(`1)">
|
||||||
|
<summary>
|
||||||
|
Attribute for filtering updates where resolved state matches target value.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TKey"></typeparam>
|
||||||
|
<typeparam name="TValue"></typeparam>
|
||||||
|
<param name="value"></param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.Annotations.StateAttribute`2.Value">
|
||||||
|
<summary>
|
||||||
|
The targetting state value.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Telegrator.Annotations.StateAttribute`2.AllowedTypes">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Annotations.StateAttribute`2.GetFilterringTarget(Telegram.Bot.Types.Update)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.Annotations.WelcomeAttribute">
|
<member name="T:Telegrator.Annotations.WelcomeAttribute">
|
||||||
<summary>
|
<summary>
|
||||||
Attribute for filtering message with command "start" in bot's private chats.
|
Attribute for filtering message with command "start" in bot's private chats.
|
||||||
@@ -2896,6 +2923,80 @@
|
|||||||
<param name="keySource">The update to resolve the key from.</param>
|
<param name="keySource">The update to resolve the key from.</param>
|
||||||
<returns>The resolved key.</returns>
|
<returns>The resolved key.</returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:Telegrator.Core.States.IStateMachine`1">
|
||||||
|
<summary>
|
||||||
|
Defines a contract for a state machine that manages transitions and retrieves states for specific updates.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TState">The type of the state. Must implement <see cref="T:System.IEquatable`1"/>.</typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateMachine`1.Current(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Gets the current state associated with the specified update key.
|
||||||
|
</summary>
|
||||||
|
<param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="updateKey">The unique key identifying the current update context (e.g., chat and user ID).</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous operation. The task result contains the current state, or the default value if no state is found.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateMachine`1.Advance(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Advances the state machine to the next state in the sequence.
|
||||||
|
</summary>
|
||||||
|
<param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="updateKey">The unique key identifying the current update context.</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous transition operation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateMachine`1.Retreat(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Moves the state machine backward to the previous state in the sequence.
|
||||||
|
</summary>
|
||||||
|
<param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="updateKey">The unique key identifying the current update context.</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous transition operation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateMachine`1.Reset(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Resets the state machine to its initial or default state.
|
||||||
|
</summary>
|
||||||
|
<param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="updateKey">The unique key identifying the current update context.</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous reset operation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Telegrator.Core.States.IStateStorage">
|
||||||
|
<summary>
|
||||||
|
Defines a contract for an asynchronous state storage mechanism.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateStorage.SetAsync``1(System.String,``0,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Saves or updates a state value associated with the specified key.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of the state object.</typeparam>
|
||||||
|
<param name="key">The unique identifier for the state.</param>
|
||||||
|
<param name="state">The state object to store.</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous save operation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateStorage.GetAsync``1(System.String,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Retrieves a state value associated with the specified key.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of the state object to retrieve.</typeparam>
|
||||||
|
<param name="key">The unique identifier for the state.</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous retrieve operation. The task result contains the state object if found; otherwise, the default value of <typeparamref name="T"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.Core.States.IStateStorage.DeleteAsync(System.String,System.Threading.CancellationToken)">
|
||||||
|
<summary>
|
||||||
|
Deletes the state value associated with the specified key.
|
||||||
|
</summary>
|
||||||
|
<param name="key">The unique identifier for the state to remove.</param>
|
||||||
|
<param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
<returns>A task that represents the asynchronous delete operation.</returns>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.DiceType">
|
<member name="T:Telegrator.DiceType">
|
||||||
<summary>
|
<summary>
|
||||||
Enumeration of dice types supported by Telegram.
|
Enumeration of dice types supported by Telegram.
|
||||||
@@ -4996,6 +5097,7 @@
|
|||||||
<param name="extraData"></param>
|
<param name="extraData"></param>
|
||||||
<param name="filters"></param>
|
<param name="filters"></param>
|
||||||
<param name="awaitingProvider"></param>
|
<param name="awaitingProvider"></param>
|
||||||
|
<param name="stateStorage"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Telegrator.Handlers.HandlerContainer`1.CreateChild``1">
|
<member name="M:Telegrator.Handlers.HandlerContainer`1.CreateChild``1">
|
||||||
<summary>
|
<summary>
|
||||||
@@ -6548,6 +6650,20 @@
|
|||||||
<returns>The chat ID as a long value.</returns>
|
<returns>The chat ID as a long value.</returns>
|
||||||
<exception cref="T:System.ArgumentException">Thrown when the update does not contain a valid chat ID.</exception>
|
<exception cref="T:System.ArgumentException">Thrown when the update does not contain a valid chat ID.</exception>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:Telegrator.States.DefaultStateStorage">
|
||||||
|
<summary>
|
||||||
|
Defines default in-memory state storage
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.DefaultStateStorage.DeleteAsync(System.String,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.DefaultStateStorage.GetAsync``1(System.String,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.DefaultStateStorage.SetAsync``1(System.String,``0,System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc/>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.States.EnumStateMachine`1">
|
<member name="T:Telegrator.States.EnumStateMachine`1">
|
||||||
<summary>
|
<summary>
|
||||||
State machine implementation for enum-based states.
|
State machine implementation for enum-based states.
|
||||||
@@ -6581,6 +6697,29 @@
|
|||||||
<returns>The sender ID as a long value.</returns>
|
<returns>The sender ID as a long value.</returns>
|
||||||
<exception cref="T:System.ArgumentException">Thrown when the update does not contain a valid sender ID.</exception>
|
<exception cref="T:System.ArgumentException">Thrown when the update does not contain a valid sender ID.</exception>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:Telegrator.States.StateMachine`2">
|
||||||
|
<inheritdoc cref="T:Telegrator.Core.States.IStateMachine`1"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.StateMachine`2.#ctor(Telegrator.Core.States.IStateStorage,Telegram.Bot.Types.Update)">
|
||||||
|
<inheritdoc cref="T:Telegrator.Core.States.IStateMachine`1"/>
|
||||||
|
</member>
|
||||||
|
<member name="F:Telegrator.States.StateMachine`2.KeyResolver">
|
||||||
|
<summary>
|
||||||
|
Chosen key resolver
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.StateMachine`2.Advance(System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc cref="M:Telegrator.Core.States.IStateMachine`1.Advance(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.StateMachine`2.Current(System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc cref="M:Telegrator.Core.States.IStateMachine`1.Current(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.StateMachine`2.Reset(System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc cref="M:Telegrator.Core.States.IStateMachine`1.Reset(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)"/>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.States.StateMachine`2.Retreat(System.Threading.CancellationToken)">
|
||||||
|
<inheritdoc cref="M:Telegrator.Core.States.IStateMachine`1.Retreat(Telegrator.Core.States.IStateStorage,System.String,System.Threading.CancellationToken)"/>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.TelegramBotInfo">
|
<member name="T:Telegrator.TelegramBotInfo">
|
||||||
<summary>
|
<summary>
|
||||||
Implementation of <see cref="T:Telegrator.Core.ITelegramBotInfo"/> that provides bot information.
|
Implementation of <see cref="T:Telegrator.Core.ITelegramBotInfo"/> that provides bot information.
|
||||||
@@ -6872,6 +7011,73 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<returns>An enumerable of bot commands.</returns>
|
<returns>An enumerable of bot commands.</returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:Telegrator.StateStorageExtensions">
|
||||||
|
<summary>
|
||||||
|
Provides extension methods for <see cref="T:Telegrator.Core.States.IStateStorage"/> to easily initialize state machines.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.StateStorageExtensions.GetStateMachine``1(Telegrator.Core.States.IStateStorage,Telegram.Bot.Types.Update)">
|
||||||
|
<summary>
|
||||||
|
Initializes a state machine using the default <see cref="T:Telegrator.States.EnumStateMachine`1"/> for the specified update.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TState">The enum type representing the state.</typeparam>
|
||||||
|
<param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
<returns>A new instance of <see cref="T:Telegrator.States.StateMachine`2"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.StateStorageExtensions.GetStateMachine``2(Telegrator.Core.States.IStateStorage,Telegram.Bot.Types.Update)">
|
||||||
|
<summary>
|
||||||
|
Initializes a specific custom state machine for the specified update.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
<typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
<param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
<returns>A new instance of <see cref="T:Telegrator.States.StateMachine`2"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.StateStorageExtensions.ByChatId``2(Telegrator.Core.States.IStateStorage,Telegram.Bot.Types.Update)">
|
||||||
|
<summary>
|
||||||
|
Initializes a state machine and explicitly configures it to resolve keys by the chat ID.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
<typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
<param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
<returns>A configured instance of <see cref="T:Telegrator.States.StateMachine`2"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.StateStorageExtensions.BySenderId``2(Telegrator.Core.States.IStateStorage,Telegram.Bot.Types.Update)">
|
||||||
|
<summary>
|
||||||
|
Initializes a state machine and explicitly configures it to resolve keys by the sender (user) ID.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
<typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
<param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
<param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
<returns>A configured instance of <see cref="T:Telegrator.States.StateMachine`2"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Telegrator.StateMachineExtensions">
|
||||||
|
<summary>
|
||||||
|
Provides fluent extension methods for configuring <see cref="T:Telegrator.States.StateMachine`2"/> instances.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.StateMachineExtensions.ByChatId``2(Telegrator.States.StateMachine{``0,``1})">
|
||||||
|
<summary>
|
||||||
|
Configures the state machine to use a <see cref="T:Telegrator.States.ChatIdResolver"/> for state key resolution.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
<typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
<param name="stateMachine">The state machine instance to configure.</param>
|
||||||
|
<returns>The same state machine instance for method chaining.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.StateMachineExtensions.BySenderId``2(Telegrator.States.StateMachine{``0,``1})">
|
||||||
|
<summary>
|
||||||
|
Configures the state machine to use a <see cref="T:Telegrator.States.SenderIdResolver"/> for state key resolution.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
<typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
<param name="stateMachine">The state machine instance to configure.</param>
|
||||||
|
<returns>The same state machine instance for method chaining.</returns>
|
||||||
|
</member>
|
||||||
<member name="T:Telegrator.HandlersCollectionExtensions">
|
<member name="T:Telegrator.HandlersCollectionExtensions">
|
||||||
<summary>
|
<summary>
|
||||||
Extension methods for handlers collections.
|
Extension methods for handlers collections.
|
||||||
@@ -7034,5 +7240,582 @@
|
|||||||
<param name="updateType"></param>
|
<param name="updateType"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.CallbackData``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a CallbackDataAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "data">The data.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.CallbackInlineId``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a CallbackInlineIdAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "inlineMessageId">The inlineMessageId.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.CommandAllias``1(``0,System.String[])">
|
||||||
|
<summary>
|
||||||
|
Adds a CommandAlliasAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "alliases">The alliases.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ArgumentCount``1(``0,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a ArgumentCountAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "count">The count.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ArgumentStartsWith``1(``0,System.String,System.StringComparison,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a ArgumentStartsWithAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<param name = "index">The index.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ArgumentEndsWith``1(``0,System.String,System.StringComparison,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a ArgumentEndsWithAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<param name = "index">The index.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ArgumentContains``1(``0,System.String,System.StringComparison,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a ArgumentContainsAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<param name = "index">The index.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ArgumentEquals``1(``0,System.String,System.StringComparison,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a ArgumentEqualsAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<param name = "index">The index.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ArgumentRegex``1(``0,System.String,System.Text.RegularExpressions.RegexOptions,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a ArgumentRegexAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "pattern">The pattern.</param>
|
||||||
|
<param name = "options">The options.</param>
|
||||||
|
<param name = "index">The index.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.IsDebugEnvironment``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a IsDebugEnvironmentAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.IsReleaseEnvironment``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a IsReleaseEnvironmentAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.EnvironmentVariable``1(``0,System.String,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a EnvironmentVariableAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "variable">The variable.</param>
|
||||||
|
<param name = "value">The value.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.EnvironmentVariable``1(``0,System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a EnvironmentVariableAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "variable">The variable.</param>
|
||||||
|
<param name = "value">The value.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.EnvironmentVariable``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a EnvironmentVariableAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "variable">The variable.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.EnvironmentVariable``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a EnvironmentVariableAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "variable">The variable.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.Mentioned``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a MentionedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.Mentioned``1(``0,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a MentionedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "offset">The offset.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.Mentioned``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a MentionedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "mention">The mention.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.Mentioned``1(``0,System.String,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a MentionedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "mention">The mention.</param>
|
||||||
|
<param name = "offset">The offset.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatIsForum``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatIsForumAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatId``1(``0,System.Int64)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatIdAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "id">The id.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.InChatType``1(``0,Telegram.Bot.Types.Enums.ChatType)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatTypeAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "type">The type.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.InChatType``1(``0,Telegrator.ChatTypeFlags)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatTypeAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "flags">The flags.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatTitle``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatTitleAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "title">The title.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatTitle``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatTitleAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "title">The title.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatUsername``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatUsernameAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "userName">The userName.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatUsername``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatUsernameAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "userName">The userName.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatName``1(``0,System.String,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatNameAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "firstName">The firstName.</param>
|
||||||
|
<param name = "lastName">The lastName.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.ChatName``1(``0,System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a ChatNameAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "firstName">The firstName.</param>
|
||||||
|
<param name = "lastName">The lastName.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MessageRegex``1(``0,System.String,System.Text.RegularExpressions.RegexOptions)">
|
||||||
|
<summary>
|
||||||
|
Adds a MessageRegexAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "pattern">The pattern.</param>
|
||||||
|
<param name = "regexOptions">The regexOptions.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MessageRegex``1(``0,System.Text.RegularExpressions.Regex)">
|
||||||
|
<summary>
|
||||||
|
Adds a MessageRegexAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "regex">The regex.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.DiceThrowed``1(``0,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a DiceThrowedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "value">The value.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.DiceThrowed``1(``0,Telegrator.DiceType,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a DiceThrowedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "diceType">The diceType.</param>
|
||||||
|
<param name = "value">The value.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.IsAutomaticFormwardMessage``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a IsAutomaticFormwardMessageAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.IsFromOfflineMessage``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a IsFromOfflineMessageAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.IsServiceMessageMessage``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a IsServiceMessageMessageAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.IsTopicMessageMessage``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a IsTopicMessageMessageAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MessageHasEntity``1(``0,Telegram.Bot.Types.Enums.MessageEntityType)">
|
||||||
|
<summary>
|
||||||
|
Adds a MessageHasEntityAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "type">The type.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MessageHasEntity``1(``0,Telegram.Bot.Types.Enums.MessageEntityType,System.Int32,System.Nullable{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
Adds a MessageHasEntityAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "type">The type.</param>
|
||||||
|
<param name = "offset">The offset.</param>
|
||||||
|
<param name = "length">The length.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MessageHasEntity``1(``0,Telegram.Bot.Types.Enums.MessageEntityType,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a MessageHasEntityAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "type">The type.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "stringComparison">The stringComparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MessageHasEntity``1(``0,Telegram.Bot.Types.Enums.MessageEntityType,System.Int32,System.Nullable{System.Int32},System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a MessageHasEntityAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "type">The type.</param>
|
||||||
|
<param name = "offset">The offset.</param>
|
||||||
|
<param name = "length">The length.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "stringComparison">The stringComparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.MeReplied``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a MeRepliedAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.HasReply``1(``0,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a HasReplyAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "replyDepth">The replyDepth.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromReplyChain``1(``0,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromReplyChainAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "replyDepth">The replyDepth.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUsername``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUsernameAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "username">The username.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUsername``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUsernameAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "username">The username.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUser``1(``0,System.String,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUserAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "firstName">The firstName.</param>
|
||||||
|
<param name = "lastName">The lastName.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUser``1(``0,System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUserAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "firstName">The firstName.</param>
|
||||||
|
<param name = "lastName">The lastName.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUser``1(``0,System.String)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUserAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "firstName">The firstName.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUser``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUserAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "firstName">The firstName.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromUserId``1(``0,System.Int64)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromUserIdAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "userId">The userId.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.NotFromBot``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a NotFromBotAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromBot``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromBotAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.FromPremiumUser``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a FromPremiumUserAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.TextStartsWith``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a TextStartsWithAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.TextEndsWith``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a TextEndsWithAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.TextContains``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a TextContainsAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.TextEquals``1(``0,System.String,System.StringComparison)">
|
||||||
|
<summary>
|
||||||
|
Adds a TextEqualsAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "content">The content.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.HasText``1(``0)">
|
||||||
|
<summary>
|
||||||
|
Adds a HasTextAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.TextContainsWord``1(``0,System.String,System.StringComparison,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Adds a TextContainsWordAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "word">The word.</param>
|
||||||
|
<param name = "comparison">The comparison.</param>
|
||||||
|
<param name = "startIndex">The startIndex.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Telegrator.HandlerBuilderExtensions.Welcome``1(``0,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Adds a WelcomeAttribute target filter to the handler builder.
|
||||||
|
</summary>
|
||||||
|
<typeparam name = "TBuilder">The builder type.</typeparam>
|
||||||
|
<param name = "builder">The handler builder.</param>
|
||||||
|
<param name = "onlyFirst">The onlyFirst.</param>
|
||||||
|
<returns>The same builder instance.</returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ using Telegrator.Core.States;
|
|||||||
|
|
||||||
namespace Telegrator.States;
|
namespace Telegrator.States;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provides a Redis-based implementation of the <see cref="IStateStorage"/> interface.
|
||||||
|
/// Serializes state objects to JSON format before storing them in the Redis database.
|
||||||
|
/// </summary>
|
||||||
public class RedisStateStorage(IConnectionMultiplexer redis) : IStateStorage
|
public class RedisStateStorage(IConnectionMultiplexer redis) : IStateStorage
|
||||||
{
|
{
|
||||||
private readonly IDatabase _db = redis.GetDatabase();
|
private readonly IDatabase _db = redis.GetDatabase();
|
||||||
@@ -30,6 +34,6 @@ public class RedisStateStorage(IConnectionMultiplexer redis) : IStateStorage
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public async Task DeleteAsync(string key, CancellationToken cancellationToken = default)
|
public async Task DeleteAsync(string key, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
await _db.KeyDeleteAsync(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.1</TargetFramework>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,25 @@ using Telegrator.Filters;
|
|||||||
|
|
||||||
namespace Telegrator.Annotations;
|
namespace Telegrator.Annotations;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Attribute for filtering updates where resolved state matches target value.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TKey"></typeparam>
|
||||||
|
/// <typeparam name="TValue"></typeparam>
|
||||||
|
/// <param name="value"></param>
|
||||||
public class StateAttribute<TKey, TValue>(TValue? value) : UpdateFilterAttribute<Update>(new StateKeyFilter<TKey, TValue>(value))
|
public class StateAttribute<TKey, TValue>(TValue? value) : UpdateFilterAttribute<Update>(new StateKeyFilter<TKey, TValue>(value))
|
||||||
where TKey : IStateKeyResolver, new()
|
where TKey : IStateKeyResolver, new()
|
||||||
where TValue : IEquatable<TValue>
|
where TValue : IEquatable<TValue>
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The targetting state value.
|
||||||
|
/// </summary>
|
||||||
public TValue? Value => value;
|
public TValue? Value => value;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public override UpdateType[] AllowedTypes => Update.AllTypes;
|
public override UpdateType[] AllowedTypes => Update.AllTypes;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public override Update? GetFilterringTarget(Update update)
|
public override Update? GetFilterringTarget(Update update)
|
||||||
{
|
{
|
||||||
return update;
|
return update;
|
||||||
|
|||||||
@@ -1,9 +1,44 @@
|
|||||||
namespace Telegrator.Core.States;
|
namespace Telegrator.Core.States;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines a contract for a state machine that manages transitions and retrieves states for specific updates.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TState">The type of the state. Must implement <see cref="IEquatable{T}"/>.</typeparam>
|
||||||
public interface IStateMachine<TState> where TState : IEquatable<TState>
|
public interface IStateMachine<TState> where TState : IEquatable<TState>
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the current state associated with the specified update key.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="updateKey">The unique key identifying the current update context (e.g., chat and user ID).</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous operation. The task result contains the current state, or the default value if no state is found.</returns>
|
||||||
Task<TState?> Current(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
Task<TState?> Current(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Advances the state machine to the next state in the sequence.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="updateKey">The unique key identifying the current update context.</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous transition operation.</returns>
|
||||||
Task Advance(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
Task Advance(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Moves the state machine backward to the previous state in the sequence.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="updateKey">The unique key identifying the current update context.</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous transition operation.</returns>
|
||||||
Task Retreat(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
Task Retreat(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Resets the state machine to its initial or default state.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="storage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="updateKey">The unique key identifying the current update context.</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous reset operation.</returns>
|
||||||
Task Reset(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
Task Reset(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default);
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,34 @@
|
|||||||
namespace Telegrator.Core.States;
|
namespace Telegrator.Core.States;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines a contract for an asynchronous state storage mechanism.
|
||||||
|
/// </summary>
|
||||||
public interface IStateStorage
|
public interface IStateStorage
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Saves or updates a state value associated with the specified key.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type of the state object.</typeparam>
|
||||||
|
/// <param name="key">The unique identifier for the state.</param>
|
||||||
|
/// <param name="state">The state object to store.</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous save operation.</returns>
|
||||||
Task SetAsync<T>(string key, T state, CancellationToken cancellationToken = default);
|
Task SetAsync<T>(string key, T state, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieves a state value associated with the specified key.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type of the state object to retrieve.</typeparam>
|
||||||
|
/// <param name="key">The unique identifier for the state.</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous retrieve operation. The task result contains the state object if found; otherwise, the default value of <typeparamref name="T"/>.</returns>
|
||||||
Task<T?> GetAsync<T>(string key, CancellationToken cancellationToken = default);
|
Task<T?> GetAsync<T>(string key, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deletes the state value associated with the specified key.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key">The unique identifier for the state to remove.</param>
|
||||||
|
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
|
||||||
|
/// <returns>A task that represents the asynchronous delete operation.</returns>
|
||||||
Task DeleteAsync(string key, CancellationToken cancellationToken = default);
|
Task DeleteAsync(string key, CancellationToken cancellationToken = default);
|
||||||
}
|
}
|
||||||
@@ -61,6 +61,7 @@ namespace Telegrator.Handlers
|
|||||||
/// <param name="extraData"></param>
|
/// <param name="extraData"></param>
|
||||||
/// <param name="filters"></param>
|
/// <param name="filters"></param>
|
||||||
/// <param name="awaitingProvider"></param>
|
/// <param name="awaitingProvider"></param>
|
||||||
|
/// <param name="stateStorage"></param>
|
||||||
public HandlerContainer(TUpdate actualUpdate, Update handlingUpdate, ITelegramBotClient client, Dictionary<string, object> extraData, CompletedFiltersList filters, IAwaitingProvider awaitingProvider, IStateStorage stateStorage)
|
public HandlerContainer(TUpdate actualUpdate, Update handlingUpdate, ITelegramBotClient client, Dictionary<string, object> extraData, CompletedFiltersList filters, IAwaitingProvider awaitingProvider, IStateStorage stateStorage)
|
||||||
{
|
{
|
||||||
ActualUpdate = actualUpdate;
|
ActualUpdate = actualUpdate;
|
||||||
|
|||||||
@@ -3,10 +3,14 @@ using Telegrator.Core.States;
|
|||||||
|
|
||||||
namespace Telegrator.States;
|
namespace Telegrator.States;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines default in-memory state storage
|
||||||
|
/// </summary>
|
||||||
public class DefaultStateStorage : IStateStorage
|
public class DefaultStateStorage : IStateStorage
|
||||||
{
|
{
|
||||||
private readonly ConcurrentDictionary<string, object> storage = [];
|
private readonly ConcurrentDictionary<string, object> storage = [];
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public Task DeleteAsync(string key, CancellationToken cancellationToken = default)
|
public Task DeleteAsync(string key, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (key is null)
|
if (key is null)
|
||||||
@@ -18,6 +22,7 @@ public class DefaultStateStorage : IStateStorage
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public Task<T?> GetAsync<T>(string key, CancellationToken ccancellationTokent = default)
|
public Task<T?> GetAsync<T>(string key, CancellationToken ccancellationTokent = default)
|
||||||
{
|
{
|
||||||
if (key is null)
|
if (key is null)
|
||||||
@@ -29,6 +34,7 @@ public class DefaultStateStorage : IStateStorage
|
|||||||
return Task.FromResult(default(T));
|
return Task.FromResult(default(T));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
public Task SetAsync<T>(string key, T state, CancellationToken cancellationToken = default)
|
public Task SetAsync<T>(string key, T state, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (key is null)
|
if (key is null)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Telegrator.Core.States;
|
|||||||
|
|
||||||
namespace Telegrator.States;
|
namespace Telegrator.States;
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IStateMachine{TState}"/>
|
||||||
public class StateMachine<TMachine, TState>(IStateStorage stateStorage, Update handlingUpdate)
|
public class StateMachine<TMachine, TState>(IStateStorage stateStorage, Update handlingUpdate)
|
||||||
where TMachine : IStateMachine<TState>, new()
|
where TMachine : IStateMachine<TState>, new()
|
||||||
where TState : IEquatable<TState>
|
where TState : IEquatable<TState>
|
||||||
@@ -11,8 +12,12 @@ public class StateMachine<TMachine, TState>(IStateStorage stateStorage, Update h
|
|||||||
private readonly Update _handlingUpdate = handlingUpdate;
|
private readonly Update _handlingUpdate = handlingUpdate;
|
||||||
private readonly IStateMachine<TState> _stateMachine = new TMachine();
|
private readonly IStateMachine<TState> _stateMachine = new TMachine();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Chosen key resolver
|
||||||
|
/// </summary>
|
||||||
public IStateKeyResolver? KeyResolver;
|
public IStateKeyResolver? KeyResolver;
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IStateMachine{TState}.Advance(IStateStorage, string, CancellationToken)"/>
|
||||||
public async Task Advance(CancellationToken cancellationToken = default)
|
public async Task Advance(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (KeyResolver is null)
|
if (KeyResolver is null)
|
||||||
@@ -25,6 +30,7 @@ public class StateMachine<TMachine, TState>(IStateStorage stateStorage, Update h
|
|||||||
await _stateMachine.Advance(_stateStorage, key, cancellationToken);
|
await _stateMachine.Advance(_stateStorage, key, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IStateMachine{TState}.Current(IStateStorage, string, CancellationToken)"/>
|
||||||
public async Task<TState?> Current(CancellationToken cancellationToken = default)
|
public async Task<TState?> Current(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (KeyResolver is null)
|
if (KeyResolver is null)
|
||||||
@@ -37,6 +43,7 @@ public class StateMachine<TMachine, TState>(IStateStorage stateStorage, Update h
|
|||||||
return await _stateMachine.Current(_stateStorage, key, cancellationToken);
|
return await _stateMachine.Current(_stateStorage, key, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IStateMachine{TState}.Reset(IStateStorage, string, CancellationToken)"/>
|
||||||
public async Task Reset(CancellationToken cancellationToken = default)
|
public async Task Reset(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (KeyResolver is null)
|
if (KeyResolver is null)
|
||||||
@@ -49,6 +56,7 @@ public class StateMachine<TMachine, TState>(IStateStorage stateStorage, Update h
|
|||||||
await _stateMachine.Reset(_stateStorage, key, cancellationToken);
|
await _stateMachine.Reset(_stateStorage, key, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IStateMachine{TState}.Retreat(IStateStorage, string, CancellationToken)"/>
|
||||||
public async Task Retreat(CancellationToken cancellationToken = default)
|
public async Task Retreat(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
if (KeyResolver is null)
|
if (KeyResolver is null)
|
||||||
|
|||||||
@@ -284,30 +284,74 @@ namespace Telegrator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provides extension methods for <see cref="IStateStorage"/> to easily initialize state machines.
|
||||||
|
/// </summary>
|
||||||
public static class StateStorageExtensions
|
public static class StateStorageExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a state machine using the default <see cref="EnumStateMachine{TState}"/> for the specified update.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TState">The enum type representing the state.</typeparam>
|
||||||
|
/// <param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
/// <returns>A new instance of <see cref="StateMachine{TMachine, TState}"/>.</returns>
|
||||||
public static StateMachine<EnumStateMachine<TState>, TState> GetStateMachine<TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
public static StateMachine<EnumStateMachine<TState>, TState> GetStateMachine<TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
||||||
where TState : struct, Enum, IEquatable<TState>
|
where TState : struct, Enum, IEquatable<TState>
|
||||||
=> new StateMachine<EnumStateMachine<TState>, TState>(stateStorage, handlingUpdate);
|
=> new StateMachine<EnumStateMachine<TState>, TState>(stateStorage, handlingUpdate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a specific custom state machine for the specified update.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
/// <typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
/// <param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
/// <returns>A new instance of <see cref="StateMachine{TMachine, TState}"/>.</returns>
|
||||||
public static StateMachine<TMachine, TState> GetStateMachine<TMachine, TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
public static StateMachine<TMachine, TState> GetStateMachine<TMachine, TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
||||||
where TMachine : IStateMachine<TState>, new()
|
where TMachine : IStateMachine<TState>, new()
|
||||||
where TState : IEquatable<TState>
|
where TState : IEquatable<TState>
|
||||||
=> new StateMachine<TMachine, TState>(stateStorage, handlingUpdate);
|
=> new StateMachine<TMachine, TState>(stateStorage, handlingUpdate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a state machine and explicitly configures it to resolve keys by the chat ID.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
/// <typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
/// <param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
/// <returns>A configured instance of <see cref="StateMachine{TMachine, TState}"/>.</returns>
|
||||||
public static StateMachine<TMachine, TState> ByChatId<TMachine, TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
public static StateMachine<TMachine, TState> ByChatId<TMachine, TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
||||||
where TMachine : IStateMachine<TState>, new()
|
where TMachine : IStateMachine<TState>, new()
|
||||||
where TState : IEquatable<TState>
|
where TState : IEquatable<TState>
|
||||||
=> new StateMachine<TMachine, TState>(stateStorage, handlingUpdate).ByChatId();
|
=> new StateMachine<TMachine, TState>(stateStorage, handlingUpdate).ByChatId();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a state machine and explicitly configures it to resolve keys by the sender (user) ID.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
/// <typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
/// <param name="stateStorage">The storage mechanism used to persist the state.</param>
|
||||||
|
/// <param name="handlingUpdate">The update context to resolve the state key from.</param>
|
||||||
|
/// <returns>A configured instance of <see cref="StateMachine{TMachine, TState}"/>.</returns>
|
||||||
public static StateMachine<TMachine, TState> BySenderId<TMachine, TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
public static StateMachine<TMachine, TState> BySenderId<TMachine, TState>(this IStateStorage stateStorage, Update handlingUpdate)
|
||||||
where TMachine : IStateMachine<TState>, new()
|
where TMachine : IStateMachine<TState>, new()
|
||||||
where TState : IEquatable<TState>
|
where TState : IEquatable<TState>
|
||||||
=> new StateMachine<TMachine, TState>(stateStorage, handlingUpdate).BySenderId();
|
=> new StateMachine<TMachine, TState>(stateStorage, handlingUpdate).BySenderId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Provides fluent extension methods for configuring <see cref="StateMachine{TMachine, TState}"/> instances.
|
||||||
|
/// </summary>
|
||||||
public static class StateMachineExtensions
|
public static class StateMachineExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Configures the state machine to use a <see cref="ChatIdResolver"/> for state key resolution.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
/// <typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
/// <param name="stateMachine">The state machine instance to configure.</param>
|
||||||
|
/// <returns>The same state machine instance for method chaining.</returns>
|
||||||
public static StateMachine<TMachine, TState> ByChatId<TMachine, TState>(this StateMachine<TMachine, TState> stateMachine)
|
public static StateMachine<TMachine, TState> ByChatId<TMachine, TState>(this StateMachine<TMachine, TState> stateMachine)
|
||||||
where TMachine : IStateMachine<TState>, new()
|
where TMachine : IStateMachine<TState>, new()
|
||||||
where TState : IEquatable<TState>
|
where TState : IEquatable<TState>
|
||||||
@@ -316,6 +360,13 @@ namespace Telegrator
|
|||||||
return stateMachine;
|
return stateMachine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Configures the state machine to use a <see cref="SenderIdResolver"/> for state key resolution.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TMachine">The type of the state machine logic implementation.</typeparam>
|
||||||
|
/// <typeparam name="TState">The type of the state.</typeparam>
|
||||||
|
/// <param name="stateMachine">The state machine instance to configure.</param>
|
||||||
|
/// <returns>The same state machine instance for method chaining.</returns>
|
||||||
public static StateMachine<TMachine, TState> BySenderId<TMachine, TState>(this StateMachine<TMachine, TState> stateMachine)
|
public static StateMachine<TMachine, TState> BySenderId<TMachine, TState>(this StateMachine<TMachine, TState> stateMachine)
|
||||||
where TMachine : IStateMachine<TState>, new()
|
where TMachine : IStateMachine<TState>, new()
|
||||||
where TState : IEquatable<TState>
|
where TState : IEquatable<TState>
|
||||||
|
|||||||
Reference in New Issue
Block a user