WTelegramBot 7.3.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package WTelegramBot --version 7.3.1                
NuGet\Install-Package WTelegramBot -Version 7.3.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WTelegramBot" Version="7.3.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WTelegramBot --version 7.3.1                
#r "nuget: WTelegramBot, 7.3.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install WTelegramBot as a Cake Addin
#addin nuget:?package=WTelegramBot&version=7.3.1

// Install WTelegramBot as a Cake Tool
#tool nuget:?package=WTelegramBot&version=7.3.1                

Bot API Layer NuGet version NuGet prerelease Donate

Powerful Telegram Bot API library for .NET

WTelegramBot is a full rewrite in pure C# of Telegram Bot API server, presenting the same methods as the Telegram.Bot library for easy migration.

The library is built on top of WTelegramClient to connect directly to Telegram Client API and gives you additional control over your bot, updates and call methods normally impossible to use with Bot API.

Advantages of WTelegram.Bot

Using class WTelegram.Bot you have access to a clean set of developer-friendly methods to easily access the Bot API

You can also call Client API methods that are possible for bots but not accessible from Bot API! Some examples:

  • Fetch past messages of group/channel
  • Get group/channel members list
  • Resolve user/chat usernames
  • Get full details of users/chats
  • Send/receive big files

You also get access to raw Updates information from Client API, in addition to the usual Bot API updates. They contain more information than the limited set of Bot API updates! Some examples:

  • Detect deletion of messages (not always immediate)
  • Get more info on message media (like date of original media upload, sticker duration, ...)
  • Notification when your messages were read in a group

See the Example app for a nice demonstration of features.

➡️ There are still a lot of restrictions to bots, even via Client API, so don't expect to be able to do many fancy things

<a name="migration"></a>

Difference between classes WTelegram.Bot and TelegramBotClient

The library contains a compatibility layer as Telegram.Bot.TelegramBotClient inheriting from WTelegram.Bot.
Click here to easily migrate your existing Telegram.Bot code.

If you're not migrating an existing codebase, it is recommended that you use WTelegram.Bot class directly.

Here are the main differences:

  • The method names don't have the *Async suffix (even though they should still be invoked with await) so they are more close to official Bot API method names.
  • The optional parameters follow a more logical order for developers, with the more rarely used optional parameters near the end.
  • There is no CancellationToken parameter because it doesn't make sense to abort an immediate TCP request to Client API.
    (Even with HTTP Bot API, it didn't make much sense: You can use cancellationToken.ThrowIfCancellationRequested() at various points of your own code if you want it to be cancellable)
  • In case of an error, WTelegram.Bot will throw WTelegram.WTException like TL.RpcException showing the raw Telegram error, instead of an ApiRequestException

How to access the advanced features?

The Example app demonstrates all of the features below.

On each Update/Message/User/Chat you receive, there is an extra field named "TL..." that contains the corresponding raw Client API structure, which may contain extra information not transcribed into the Bot API

You can also enable TelegramBotClient.WantUnknownTLUpdates to receive updates that usually would have been silently ignored by Bot API (they will be posted as Update of type Unknown with the TLUpdate field filled)

Some extended API calls can be made via WTelegram.Bot special methods:

  • GetChatMemberList: fetch a list of chat members
  • GetMessagesById: fetch posted messages (or range of messages) based on their message IDs
  • InputUser: can resolve a username into a user ID that you can then use with GetChat
  • GetChat: can obtain details about any group/channel based on their public name, or a user ID resolved by InputUser

Other extended API calls not usually accessible to Bot API can be made via the Bot.Client property which is the underlying WTelegramClient instance.

  • This way, you can use new features available only in Client API latest layers without waiting months for it to be available in Bot API

For more information about calling Client API methods, you can read that library's documentation or search through the official Client API documentation, but make sure to look for the mention "Bots can use this method" (other methods can't be called).

Note: If you want to experiment with these, you'll need to add a using TL; on top of your code, and these calls might throw TL.RpcException instead of ApiRequestException

Some other WTelegram.Bot methods (for example, beginning with Input*) and extension methods can help you convert Bot API ids or structure to/from Client API.

Support for ASP.NET apps

If your app is written as an ASP.NET app using webhooks, you can still use this library using background Polling:

// instead of calling SetWebhookAsync, run the following code once your app starts:
BotClient.StartReceiving(HandleUpdate, HandlePollingError);

You should make sure your hosting service won't stop/recycle your app after some HTTP inactivity timeout.

(some host providers have an "always on" option, or alternatively you can ping your service with an HTTP request every 5 min to keep it alive)

Help with the library

This library is still quite new but I tested it extensively to make sure it covers all of the Bot API successfully.

If you have questions about the (official) Bot API methods from TelegramBotClient, you can ask them in Telegram.Bot support chat.

If your question is more specific to WTelegram.Bot, or an issue with library behaviour, you can ask them in @WTelegramClient.

If you like this library, you can buy me a coffee ❤ This will help the project keep going.

© 2024 Olivier Marcoux

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  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 is compatible.  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 netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
7.6.1 101 7/6/2024
7.4.1-dev.6 26 7/5/2024
7.4.1-dev.4 31 7/1/2024
7.4.1-dev.2 49 6/10/2024
7.4.1-dev.1 49 6/6/2024
7.3.2-dev.1 38 6/5/2024
7.3.1 155 6/4/2024
7.3.1-dev.4 42 6/4/2024
7.3.1-dev.3 68 5/7/2024
7.3.1-dev.2 55 5/7/2024
7.3.1-dev.1 61 5/6/2024
7.2.1-dev.1 57 4/30/2024
7.2.0 147 4/29/2024
7.2.0-dev.8 47 4/29/2024

- Bot API 7.3
- Using generated code/types for faster releases