Files
Telegram.Net/README.md
Dmitri Shimanski 9b0578092b Update README.md
2025-03-21 01:08:34 +02:00

110 lines
3.2 KiB
Markdown

# Telegram Bot Attribute Handlers
This project provides a set of C# attributes to facilitate the handling of different types of Telegram bot updates using reflection.
## Features
- **Inline Query Handling** (`InlineAttribute`)
- **Edited Message Handling** (`EditMessageAttribute`)
- **Command Handling** (`CommandHandlerAttribute`)
- **Callback Query Handling** (`CallbackAttribute`)
- **PreCheckout Query Handling** (`PreCheckoutAttribute`)
- **General Update Handling** (`UpdateAttribute`)
- **Auto-generate telegram client**
## Installation
Ensure you have the required dependencies installed:
```sh
dotnet add package yawaflua.Telegram.Net
```
## Usage
### Provide dependencies in class
You can provide dependencies in class from constructor, and after it use it like `static`.
```csharp
public class Example : IUpdatePollingService
{
private static MyCoolService _service; // It should to be static!
public Example(MyCoolService service)
{
_service = service;
}
}
```
### Inline Query Handling
Use the `InlineAttribute` to register a method as an inline query handler.
```csharp
[Inline("example_query")]
public static async Task HandleInlineQuery(ITelegramBotClient bot, InlineQuery query, CancellationToken cancellationToken)
{
// Handle inline query
}
```
### Edited Message Handling
Use the `EditMessageAttribute` to register a method as a handler for edited messages.
```csharp
[EditMessage]
public static async Task HandleEditedMessage(ITelegramBotClient bot, Message message, CancellationToken cancellationToken)
{
// Handle edited message
}
```
### Command Handling
Use the `CommandHandlerAttribute` to register a method as a command handler.
You can provide only begin of command text. Like, `/start act-`
```csharp
[CommandHandler("/start")]
public static async Task StartCommand(ITelegramBotClient bot, Message message, CancellationToken cancellationToken)
{
// Handle start command
}
```
### Callback Query Handling
Use the `CallbackAttribute` to register a method as a callback query handler.
You can provide only begin of callback data text
```csharp
[Callback("button_click")]
public static async Task HandleCallbackQuery(ITelegramBotClient bot, CallbackQuery query, CancellationToken cancellationToken)
{
// Handle callback query
}
```
### PreCheckout Query Handling
Use the `PreCheckoutAttribute` to register a method as a pre-checkout query handler.
```csharp
[PreCheckout]
public static async Task HandlePreCheckoutQuery(ITelegramBotClient bot, PreCheckoutQuery query, CancellationToken cancellationToken)
{
// Handle pre-checkout query
}
```
### General Update Handling
Use the `UpdateAttribute` to register a method as a generic update handler.
```csharp
[Update]
public static async Task HandleUpdate(ITelegramBotClient bot, Update update, CancellationToken cancellationToken)
{
// Handle general update
}
```
### We know about this bugs:
- [ X ] Not working providing dependencies in class constructor and this gives an error.
~~Try to not use provided dependencies in class. We are should to fix it in v1.0.2.~~
Now just use static variables
## License
This project is open-source and available under the [Apache 2.0 License](LICENSE).