mirror of
https://github.com/yawaflua/Telegram.Net.git
synced 2025-12-08 19:49:30 +02:00
110 lines
3.2 KiB
Markdown
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).
|