* warnings fixes

This commit is contained in:
2026-03-09 13:40:58 +04:00
parent 79d5df8291
commit 0dedd3c0f4
12 changed files with 59 additions and 24 deletions
@@ -148,6 +148,7 @@ public class ImplicitHandlerBuilderExtensionsGenerator : IIncrementalGenerator
.AddMembers([.. targetters.Values, .. extensions]); .AddMembers([.. targetters.Values, .. extensions]);
NamespaceDeclarationSyntax namespaceDeclaration = SyntaxFactory.NamespaceDeclaration(SyntaxFactory.ParseName("Telegrator")) NamespaceDeclarationSyntax namespaceDeclaration = SyntaxFactory.NamespaceDeclaration(SyntaxFactory.ParseName("Telegrator"))
.WithLeadingTrivia(SyntaxFactory.ParseLeadingTrivia("#pragma warning disable CS1591"))
.WithMembers([extensionsClass]); .WithMembers([extensionsClass]);
CompilationUnitSyntax compilationUnit = SyntaxFactory.CompilationUnit() CompilationUnitSyntax compilationUnit = SyntaxFactory.CompilationUnit()
+10 -2
View File
@@ -221,7 +221,7 @@
<member name="T:Telegrator.Providers.HostAwaitingProvider"> <member name="T:Telegrator.Providers.HostAwaitingProvider">
<inheritdoc/> <inheritdoc/>
</member> </member>
<member name="M:Telegrator.Providers.HostAwaitingProvider.#ctor(Microsoft.Extensions.Options.IOptions{Telegrator.TelegratorOptions},Microsoft.Extensions.Logging.ILogger{Telegrator.Providers.HostAwaitingProvider})"> <member name="M:Telegrator.Providers.HostAwaitingProvider.#ctor(Microsoft.Extensions.Options.IOptions{Telegrator.TelegratorOptions})">
<inheritdoc/> <inheritdoc/>
</member> </member>
<member name="T:Telegrator.Providers.HostHandlersCollection"> <member name="T:Telegrator.Providers.HostHandlersCollection">
@@ -239,7 +239,7 @@
<member name="T:Telegrator.Providers.HostHandlersProvider"> <member name="T:Telegrator.Providers.HostHandlersProvider">
<inheritdoc/> <inheritdoc/>
</member> </member>
<member name="M:Telegrator.Providers.HostHandlersProvider.#ctor(Telegrator.Core.IHandlersCollection,Microsoft.Extensions.Options.IOptions{Telegrator.TelegratorOptions},System.IServiceProvider,Microsoft.Extensions.Logging.ILogger{Telegrator.Providers.HostHandlersProvider})"> <member name="M:Telegrator.Providers.HostHandlersProvider.#ctor(Telegrator.Core.IHandlersCollection,Microsoft.Extensions.Options.IOptions{Telegrator.TelegratorOptions},System.IServiceProvider)">
<inheritdoc/> <inheritdoc/>
</member> </member>
<member name="M:Telegrator.Providers.HostHandlersProvider.GetHandlerInstance(Telegrator.Core.Descriptors.HandlerDescriptor,System.Threading.CancellationToken)"> <member name="M:Telegrator.Providers.HostHandlersProvider.GetHandlerInstance(Telegrator.Core.Descriptors.HandlerDescriptor,System.Threading.CancellationToken)">
@@ -274,6 +274,14 @@
Provides method to configure Telegram Bot Host Provides method to configure Telegram Bot Host
</summary> </summary>
</member> </member>
<member name="M:Telegrator.ServicesCollectionExtensions.AddStateStorage``1(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<summary>
Registers <see cref="T:Telegrator.Core.States.IStateStorage"/> service
</summary>
<typeparam name="TStorage"></typeparam>
<param name="services"></param>
<returns></returns>
</member>
<member name="M:Telegrator.ServicesCollectionExtensions.AddTelegramBotHostDefaults(Microsoft.Extensions.DependencyInjection.IServiceCollection)"> <member name="M:Telegrator.ServicesCollectionExtensions.AddTelegramBotHostDefaults(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<summary> <summary>
Registers <see cref="T:Telegrator.Hosting.TelegramBotHost"/> default services Registers <see cref="T:Telegrator.Hosting.TelegramBotHost"/> default services
+5
View File
@@ -7161,6 +7161,11 @@
Provides extension methods for working with Telegram Update objects. Provides extension methods for working with Telegram Update objects.
</summary> </summary>
</member> </member>
<member name="M:Telegrator.UpdateExtensions.GetUserLanguageCode(Telegram.Bot.Types.Update)">
<summary>
Extracts the IETF language tag of the user's client from the update.
</summary>
</member>
<member name="M:Telegrator.UpdateExtensions.GetSenderId(Telegram.Bot.Types.Update)"> <member name="M:Telegrator.UpdateExtensions.GetSenderId(Telegram.Bot.Types.Update)">
<summary> <summary>
Selects from Update an object from which you can get the sender's ID Selects from Update an object from which you can get the sender's ID
@@ -9,3 +9,4 @@ using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("Style", "IDE0090")] [assembly: SuppressMessage("Style", "IDE0090")]
[assembly: SuppressMessage("Usage", "CA2254")] [assembly: SuppressMessage("Usage", "CA2254")]
[assembly: SuppressMessage("Maintainability", "CA1510")] [assembly: SuppressMessage("Maintainability", "CA1510")]
[assembly: SuppressMessage("Style", "IDE0270")]
@@ -9,3 +9,4 @@ using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("Style", "IDE0090")] [assembly: SuppressMessage("Style", "IDE0090")]
[assembly: SuppressMessage("Usage", "CA2254")] [assembly: SuppressMessage("Usage", "CA2254")]
[assembly: SuppressMessage("Maintainability", "CA1510")] [assembly: SuppressMessage("Maintainability", "CA1510")]
[assembly: SuppressMessage("Style", "IDE0270")]
+1
View File
@@ -8,3 +8,4 @@ using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("Style", "IDE0290")] [assembly: SuppressMessage("Style", "IDE0290")]
[assembly: SuppressMessage("Style", "IDE0090")] [assembly: SuppressMessage("Style", "IDE0090")]
[assembly: SuppressMessage("Style", "IDE0057")] [assembly: SuppressMessage("Style", "IDE0057")]
[assembly: SuppressMessage("Style", "IDE0270")]
@@ -59,6 +59,7 @@ public static partial class HandlerBuilderExtensions
return handlerBuilder; return handlerBuilder;
} }
#pragma warning disable CS1574
/// <inheritdoc cref="HandlerBuilderBase.SetState{TKey, TValue}(TValue?)"/> /// <inheritdoc cref="HandlerBuilderBase.SetState{TKey, TValue}(TValue?)"/>
public static TBuilder SetState<TBuilder, TKey, TValue>(this TBuilder handlerBuilder, TValue? myState) public static TBuilder SetState<TBuilder, TKey, TValue>(this TBuilder handlerBuilder, TValue? myState)
where TBuilder : HandlerBuilderBase where TBuilder : HandlerBuilderBase
@@ -68,6 +69,7 @@ public static partial class HandlerBuilderExtensions
handlerBuilder.SetState<TKey, TValue>(myState); handlerBuilder.SetState<TKey, TValue>(myState);
return handlerBuilder; return handlerBuilder;
} }
#pragma warning restore CS1574
/// <summary> /// <summary>
/// Adds a targeted filter for a specific filter target type. /// Adds a targeted filter for a specific filter target type.
+1 -1
View File
@@ -16,7 +16,7 @@ public class DefaultStateStorage : IStateStorage
if (key is null) if (key is null)
throw new ArgumentNullException(nameof(key)); throw new ArgumentNullException(nameof(key));
if (!storage.TryRemove(key, out object value)) if (!storage.TryRemove(key, out _))
throw new Exception("Failed to remove key '" + key + "' from storage."); throw new Exception("Failed to remove key '" + key + "' from storage.");
return Task.CompletedTask; return Task.CompletedTask;
+3 -3
View File
@@ -10,7 +10,7 @@ namespace Telegrator.States;
public class EnumStateMachine<TEnum> : IStateMachine<TEnum> where TEnum : struct, Enum, IEquatable<TEnum> public class EnumStateMachine<TEnum> : IStateMachine<TEnum> where TEnum : struct, Enum, IEquatable<TEnum>
{ {
private readonly TEnum[] _states = Enum.GetValues(typeof(TEnum)).Cast<TEnum>().ToArray(); private readonly TEnum[] _states = Enum.GetValues(typeof(TEnum)).Cast<TEnum>().ToArray();
private TEnum _defaultState => _states.FirstOrDefault(); private TEnum DefaultState => _states.FirstOrDefault();
/// <inheritdoc/> /// <inheritdoc/>
public async Task<TEnum> Current(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default) public async Task<TEnum> Current(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default)
@@ -19,7 +19,7 @@ public class EnumStateMachine<TEnum> : IStateMachine<TEnum> where TEnum : struct
TEnum state = await storage.GetAsync<TEnum>(key, cancellationToken); TEnum state = await storage.GetAsync<TEnum>(key, cancellationToken);
return EqualityComparer<TEnum>.Default.Equals(state, default) return EqualityComparer<TEnum>.Default.Equals(state, default)
? _defaultState : state; ? DefaultState : state;
} }
/// <inheritdoc/> /// <inheritdoc/>
@@ -54,7 +54,7 @@ public class EnumStateMachine<TEnum> : IStateMachine<TEnum> where TEnum : struct
public async Task Reset(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default) public async Task Reset(IStateStorage storage, string updateKey, CancellationToken cancellationToken = default)
{ {
string key = FormatKey(updateKey); string key = FormatKey(updateKey);
await storage.SetAsync(key, _defaultState, cancellationToken); await storage.SetAsync(key, DefaultState, cancellationToken);
} }
private static string FormatKey(string updateKey) private static string FormatKey(string updateKey)
+1
View File
@@ -32,6 +32,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.3" />
<PackageReference Include="System.Threading.Channels" Version="10.0.3" /> <PackageReference Include="System.Threading.Channels" Version="10.0.3" />
<PackageReference Include="Telegram.Bot" Version="22.9.5.3" /> <PackageReference Include="Telegram.Bot" Version="22.9.5.3" />
</ItemGroup> </ItemGroup>
+15
View File
@@ -515,6 +515,21 @@ public static partial class HandlersCollectionExtensions
/// </summary> /// </summary>
public static partial class UpdateExtensions public static partial class UpdateExtensions
{ {
/// <summary>
/// Extracts the IETF language tag of the user's client from the update.
/// </summary>
public static string? GetUserLanguageCode(this Update update) => update switch
{
{ Message.From: { } from } => from.LanguageCode,
{ EditedMessage.From: { } from } => from.LanguageCode,
{ CallbackQuery.From: { } from } => from.LanguageCode,
{ InlineQuery.From: { } from } => from.LanguageCode,
{ ChatJoinRequest.From: { } from } => from.LanguageCode,
{ PreCheckoutQuery.From: { } from } => from.LanguageCode,
{ ShippingQuery.From: { } from } => from.LanguageCode,
_ => null
};
/// <summary> /// <summary>
/// Selects from Update an object from which you can get the sender's ID /// Selects from Update an object from which you can get the sender's ID
/// </summary> /// </summary>
@@ -44,7 +44,7 @@ public class CollectionTests
{ {
// Arrange // Arrange
var list = new HandlerDescriptorList(); var list = new HandlerDescriptorList();
var descriptor = CreateTestDescriptor(UpdateType.Message); var descriptor = CreateTestDescriptor();
// Act // Act
list.Add(descriptor); list.Add(descriptor);
@@ -64,9 +64,9 @@ public class CollectionTests
{ {
// Arrange // Arrange
var list = new HandlerDescriptorList(); var list = new HandlerDescriptorList();
var descriptor1 = CreateTestDescriptor(UpdateType.Message); var descriptor1 = CreateTestDescriptor();
var descriptor2 = CreateTestDescriptor(UpdateType.CallbackQuery); var descriptor2 = CreateTestDescriptor();
var descriptor3 = CreateTestDescriptor(UpdateType.InlineQuery); var descriptor3 = CreateTestDescriptor();
// Act // Act
list.Add(descriptor1); list.Add(descriptor1);
@@ -89,7 +89,7 @@ public class CollectionTests
public void HandlerDescriptorList_Indexer_ShouldReturnDescriptorAtIndex() public void HandlerDescriptorList_Indexer_ShouldReturnDescriptorAtIndex()
{ {
// Arrange // Arrange
var descriptor = CreateTestDescriptor(UpdateType.Message); var descriptor = CreateTestDescriptor();
var list = new HandlerDescriptorList var list = new HandlerDescriptorList
{ {
descriptor descriptor
@@ -116,7 +116,7 @@ public class CollectionTests
// Arrange // Arrange
var list = new HandlerDescriptorList var list = new HandlerDescriptorList
{ {
CreateTestDescriptor(UpdateType.Message) CreateTestDescriptor()
}; };
// Act & Assert // Act & Assert
@@ -133,8 +133,8 @@ public class CollectionTests
public void HandlerDescriptorList_ShouldBeEnumerable() public void HandlerDescriptorList_ShouldBeEnumerable()
{ {
// Arrange // Arrange
var descriptor1 = CreateTestDescriptor(UpdateType.Message); var descriptor1 = CreateTestDescriptor();
var descriptor2 = CreateTestDescriptor(UpdateType.CallbackQuery); var descriptor2 = CreateTestDescriptor();
var list = new HandlerDescriptorList var list = new HandlerDescriptorList
{ {
descriptor1, descriptor1,
@@ -161,8 +161,8 @@ public class CollectionTests
// Arrange // Arrange
var list = new HandlerDescriptorList var list = new HandlerDescriptorList
{ {
CreateTestDescriptor(UpdateType.Message), CreateTestDescriptor(),
CreateTestDescriptor(UpdateType.CallbackQuery) CreateTestDescriptor()
}; };
// Act // Act
@@ -183,8 +183,8 @@ public class CollectionTests
{ {
// Arrange // Arrange
var list = new HandlerDescriptorList(); var list = new HandlerDescriptorList();
var descriptor = CreateTestDescriptor(UpdateType.Message); var descriptor = CreateTestDescriptor();
var nonExistentDescriptor = CreateTestDescriptor(UpdateType.CallbackQuery); var nonExistentDescriptor = CreateTestDescriptor();
// Act // Act
list.Add(descriptor); list.Add(descriptor);
@@ -206,7 +206,7 @@ public class CollectionTests
{ {
// Arrange // Arrange
var list = new HandlerDescriptorList(); var list = new HandlerDescriptorList();
var descriptor = CreateTestDescriptor(UpdateType.Message); var descriptor = CreateTestDescriptor();
list.Add(descriptor); list.Add(descriptor);
// Act // Act
@@ -228,7 +228,7 @@ public class CollectionTests
{ {
// Arrange // Arrange
var list = new HandlerDescriptorList(); var list = new HandlerDescriptorList();
var nonExistentDescriptor = CreateTestDescriptor(UpdateType.CallbackQuery); var nonExistentDescriptor = CreateTestDescriptor();
// Act // Act
var removed = list.Remove(nonExistentDescriptor); var removed = list.Remove(nonExistentDescriptor);
@@ -269,7 +269,7 @@ public class CollectionTests
// Act // Act
for (int i = 0; i < itemsCount; i++) for (int i = 0; i < itemsCount; i++)
{ {
list.Add(CreateTestDescriptor(UpdateType.Message)); list.Add(CreateTestDescriptor());
} }
// Assert // Assert
@@ -295,7 +295,7 @@ public class CollectionTests
{ {
for (int j = 0; j < 10; j++) for (int j = 0; j < 10; j++)
{ {
list.Add(CreateTestDescriptor(UpdateType.Message)); list.Add(CreateTestDescriptor());
} }
})); }));
} }
@@ -309,7 +309,7 @@ public class CollectionTests
/// <summary> /// <summary>
/// Вспомогательный метод для создания тестового дескриптора. /// Вспомогательный метод для создания тестового дескриптора.
/// </summary> /// </summary>
private static HandlerDescriptor CreateTestDescriptor(UpdateType updateType) private static HandlerDescriptor CreateTestDescriptor()
{ {
return new HandlerDescriptor(DescriptorType.General, typeof(TestUpdateHandler)); return new HandlerDescriptor(DescriptorType.General, typeof(TestUpdateHandler));
} }