TelegramSimpleService 1.0.6.2
See the version list below for details.
dotnet add package TelegramSimpleService --version 1.0.6.2
NuGet\Install-Package TelegramSimpleService -Version 1.0.6.2
<PackageReference Include="TelegramSimpleService" Version="1.0.6.2" />
paket add TelegramSimpleService --version 1.0.6.2
#r "nuget: TelegramSimpleService, 1.0.6.2"
// Install TelegramSimpleService as a Cake Addin #addin nuget:?package=TelegramSimpleService&version=1.0.6.2 // Install TelegramSimpleService as a Cake Tool #tool nuget:?package=TelegramSimpleService&version=1.0.6.2
TelegramSimpleService
RU
Поддерживаемые платформы
Проект нацелен как минимум на .NET Standard 2.0 и .NET Core 3.1.
Руководство использования
Сервис написан на основе TelegramBot</br> Для начала работы с ботом необходимо получить token от BotFather Инструкция</br>
Инициализация сервиса
Для использования сервиса необходимо инициализировать его
namespace YourBot
{
private ITelegramService telegramService;
class Program
{
telegramService = new TelegramService();
}
}
Инициализация телеграм клиентов
Внутри сервиса лежит два статических объекта Client и Debugger с типом TelegramBotClient</br> Для их инициализации используйте соответствующие методы
TelegramBotClient client;
bool isCorrect = await telegramService.CheckBotToken("YOUR_TOKEN");
if (!isCorrect)
return;
client = telegramService.CreateMainBot("YOUR_TOKEN");
TelegramBotClient debugger;
bool isCorrect = await telegramService.CheckBotToken("YOUR_TOKEN");
if (!isCorrect)
return;
debugger = telegramService.CreateDebugBot("YOUR_TOKEN");
TelegramBotClient other;
bool isCorrect = await telegramService.CheckBotToken("YOUR_TOKEN");
if (!isCorrect)
return;
other = telegramService.CreateOtherBot("YOUR_TOKEN");
Для того чтобы прослушивать сообщения ботом необходимо создать класс имплементирующий интерфейс IUpdateHandler и вызвать метод StartMainBotReceiving - для прослушивания с основного бота или метод StartBotReceiving - для прослушивания с другого объекта TelegramBotClient
public class Handler : IUpdateHandler
{
public Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
{
//exceptions
}
public Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
//your updates
}
}
CancelationTokenSource cts = telegramService.StartMainBotReceiving(handler, new UpdateType[] { });
CancelationTokenSource cts = telegramService.StartBotReceiving(client, handler, new UpdateType[] { });
При необходимости можно ограничить принимаемые типы указав их в параметре Доступные типы здесь
Пример:
CancelationTokenSource cts = telegramService.StartMainBotReceiving(handler,
new UpdateType[]
{
UpdateType.Message,
UpdateType.CallbackQuery
});
Отправка логов
После инициализации дебагера CreateDebugBot можно использовать метод SendLog(uid, string) Этот метод позволяет отправлять лог с другого бота имеющего доступ к сообщениям Пример реализации
try
{
//some code
}
catch (Exception ex)
{
await telegramService.SendLogAsync(id_for_debug, ex.Message);
}
Реализованные типы
Ниже указаны реализованные в сервисе типы сообщений (если последним параметром добавить клиент TelegramBotClient сообщение будет отправлено от него), по умолчанию для сообщений используется ParseMode = HTML, в параметрах можно изменить на Markdown
DeleteMessage - метод удаляет сообщение из чата
await telegramService.DeleteMessageAsync(chat_id, message_id)
SendRemoveMessage - метод отправляет сообщение и удаляет клавиатуру
await telegramService.SendRemoveMessageAsync(target_id, "text")
SendMessage - метод отправляет сообщение
await telegramService.SendMessageAsync(target_id, "text")
SendMessageWithFile - метод отправляет сообщение с вложением, если указать параметр deleteFileWhenComplete = false файл остается на компьютере, по умолчанию = true, файл удаляется после отправки
await telegramService.SendMessageWithFileAsync(target_id, "text", new FileStream("example.txt", FileMode.Open))
SendMessageWithKeyboard - метод отправляет сообщение с клавиатурой Метод перегружен и принимает ReplyKeyboardMarkup или InlineKeyboardMarkup или ReplyKeyboardRemove
await telegramService.SendMessageWithKeyboardAsync(target_id, "text", markup)
Клавиатуры
Для иницилизации сервиса клавиатур используйте интерфейс IKeyboardService
namespace YourBot
{
private IKeyboardService keyboardService;
class Program
{
keyboardService = new KeyboardService();
}
}
По умолчанию метод задает имена файлов для хранимых клавиатур r_keys.json и i_keys.json</br> Изменить имена можно с помощью метода SetStoreFileName(string, string) в параметрах указываются новые имена для файлов</br> Метод возвращает true при успешном выполнении
keyboardService.SetStoreFileName("new_reply_keyboards_name.json", "new_inline_keyboards_name.json")
Для сохранения клавиатур используется метод SaveKeyboards(keyboards) возвращает true в случае успеха
await keyboardService.SaveKeyboardsAsync(keyboards);
Для загрузки сохраненных клавиатур используется метод LoadKeyboardsAsync(KeyboardType) и выбирается какую клавиатуру необходимо загрузить</br> Метод возвращает object который нужно привести к типу нужной клавиатуры
Dictionary<string, ReplyKeyboardMarkup> loaded_r_keys = (Dictionary<string, ReplyKeyboardMarkup>)await keyboardService.LoadKeyboardsAsync(KeyboardType.Reply);
Dictionary<string, InlineKeyboardMarkup> loaded_i_keys = (Dictionary<string, InlineKeyboardMarkup>)await keyboardService.LoadKeyboardsAsync(KeyboardType.Inline);
Для генерации inline клавиатуры используйте метод GenerateInlineKeyboard(List<Tuple<string, string>>) </br> Для каждого элемента списка используется тип Tuple где 1 элемент текст кнопки 2 элемент CallbackData
InlineKeyboardMarkup keyboard = keyboardService.GenerateInlineKeyboard(myCollection);
Для генерации так же доступен расширенный метод GeneratePagedInlineKeyboard, работает по принципу GenerateInlineKeyboard с разницей в параметрах</br> В параметрах указывается номер текущей страницы, максимальное кол-во элементов на странице, данные для кнопок назад и вперед</br> При указании страницы вне допустимого значения выбирается первая или последняя страница, к примеру страниц 5 при вводе страницы 7 будет загрузка страницы 5
//Загрузка страницы 1, кол-во элементов на странице 5
InlineKeyboardMarkup keyboard = keyboardService.GeneratePagedInlineKeyboard(myCollection, 1, 5, new Tuple<string, string>("Btn1", "Back"), new Tuple<string, string>("Btn2", "Forward"));
//Загрузка страницы 3, кол-во элементов на странице 5
InlineKeyboardMarkup keyboard = keyboardService.GeneratePagedInlineKeyboard(myCollection, 3, 5, new Tuple<string, string>("Btn1", "Back"), new Tuple<string, string>("Btn2", "Forward"));
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Newtonsoft.Json (>= 13.0.1)
- Telegram.Bot (>= 17.0.0)
- Telegram.Bot.Extensions.Polling (>= 1.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.7.2 | 470 | 8/14/2022 |
1.0.7.1 | 427 | 8/7/2022 |
1.0.7 | 416 | 8/6/2022 |
1.0.6.5 | 470 | 2/18/2022 |
1.0.6.4 | 451 | 2/11/2022 |
1.0.6.3 | 458 | 2/10/2022 |
1.0.6.2 | 430 | 2/10/2022 |
1.0.6.1 | 474 | 1/24/2022 |
1.0.6 | 450 | 1/24/2022 |
1.0.5 | 254 | 1/16/2022 |
1.0.4 | 449 | 1/12/2022 |
1.0.3 | 285 | 1/12/2022 |
1.0.2 | 464 | 1/12/2022 |
1.0.1 | 464 | 1/11/2022 |