Demandé
Respecté122k fois
Je souhaite utiliser l’API Telegram en C # pour envoyer un message simple à un numéro. J’ai trouvé des bibliothèques sur GitHub mais je ne peux pas les utiliser.
Quelqu’un peut-il donner un code simple? Puis-je simplement passer des appels HTTP ?
3
- Installer le package Telegram.Bot
- Créer un bot avec le botfather
- Obtenez la clé API avec la commande /token (toujours dans Botfather)
- Utilisez ce code :
var bot = new Api("your api key here");
var t = await bot.SendTextMessage("@channelname or chat_id", "text message");
Vous pouvez désormais transmettre un nom d’utilisateur de canal (au format @channelusername) au lieu de chat_id (et au lieu de from_chat_id dans forwardMessage) dans toutes les méthodes. Pour que cela fonctionne, le bot doit être un administrateur sur le canal.
6e
Voici le moyen le plus simple que j’ai trouvé jusqu’à présent. Je l’ai trouvé ici, grâce à Paolo Montalto https://medium.com/@xabaras/sending-a-message-to-a-telegram-channel-the-easy-way-eb0a0b32968
Après avoir créé un bot Telegram via BotFather et vos identifiants cibles via. ont reçu https://api.telegram.org/bot[YourApiToken]/getUpdates
Vous pouvez envoyer un message à vos identifiants en envoyant une requête HTTP GET à l’API Telegram BOT à l’aide de l’URL suivante https://api.telegram.org/bot[YourApiToken]/sendMessage?chat_id=[DestitationID]&text=[MESSAGE_TEXT]
Des détails sur un moyen simple de créer un bot et d’obtenir des identifiants peuvent être trouvés ici : https://programmingistheway.wordpress.com/2015/12/03/send-telegram-messages-from-c/
Vous pouvez même tester ces chaînes d’URL directement dans le navigateur. Voici une méthode simple que j’utilise en C # pour envoyer des messages sans dépendre d’une DLL liée à l’API de bot et d’une complication d’appel asynchrone :
using System.Net;
...
public string TelegramSendMessage(string apilToken, string destID, string text)
{
string urlString = $"https://api.telegram.org/bot{apilToken}/sendMessage?chat_id={destID}&text={text}";
WebClient webclient = new WebClient();
return webclient.DownloadString(urlString);
}
3
utilisez ce code 🙂 avec https://github.com/sochix/TLSharp
using TeleSharp.TL;
using TLSharp;
using TLSharp.Core;
namespace TelegramSend
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TelegramClient client;
private async void button1_Click(object sender, EventArgs e)
{
client = new TelegramClient(<your api_id>, <your api_key>);
await client.ConnectAsync();
}
string hash;
private async void button2_Click(object sender, EventArgs e)
{
hash = await client.SendCodeRequestAsync(textBox1.Text);
//var code = "<code_from_telegram>"; // you can change code in debugger
}
private async void button3_Click(object sender, EventArgs e)
{
var user = await client.MakeAuthAsync(textBox1.Text, hash, textBox2.Text);
}
private async void button4_Click(object sender, EventArgs e)
{
//get available contacts
var result = await client.GetContactsAsync();
//find recipient in contacts
var user = result.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.Cast<TLUser>()
.Where(x => x.first_name == "ZRX");
if (user.ToList().Count != 0)
{
foreach (var u in user)
{
if (u.phone.Contains("3965604"))
{
//send message
await client.SendMessageAsync(new TLInputPeerUser() { user_id = u.id }, textBox3.Text);
}
}
}
}
}}
3
1-d’abord une chaîne dans le télégramme (par exemple @mychanel)
2-Créez un bot Telegram (par exemple @myTestBot) et obtenez un jeton API pour l’étape suivante
3-Ajoutez @myTestBot à votre chaîne (@mychanel) en tant qu’utilisateur administrateur
4-Utilisez le code suivant pour envoyer le message :
var bot = new TelegramBotClient("api_token_bot");
var s = await bot.SendTextMessageAsync("@mychanel", "your_message");
3
ce code fonctionne pour moi:
using System.Net;
public class TelegramBot
{
static readonly string token = "123456789:AAHsxzvZLfFAsfAY3f78b8t6MXw3";
static readonly string chatId = "123456789";
public static string SendMessage(string message)
{
string retval = string.Empty;
string url = $"https://api.telegram.org/bot{token}/sendMessage?chat_id={chatId}&text={message}";
using(var webClient = new WebClient())
{
retval = webClient.DownloadString(url);
}
return retval;
}
}
1
J’ai écrit une bibliothèque cliente pour accéder à l’API du bot Telegram et le code source est disponible sur Github. Vous pouvez accéder au fichier Telebot.cs pour voir un exemple de la façon d’envoyer un message à l’API du bot.
URL Github : github.com/mrtaikandi/Telebot
URL du nugget : nuget.org/packages/Telebot
3
Il y a maintenant WTelegramClient, en utilisant le dernier protocole API Telegram Client (connectez-vous en tant qu’utilisateur, pas en tant que bot).
La bibliothèque est très complète, mais aussi très simple d’utilisation. Suis ça LISEZ-MOI sur GitHub pour un démarrage facile.
Envoyer un message à quelqu’un peut être aussi simple que :
using TL;
using var client = new WTelegram.Client(); // or Client(Environment.GetEnvironmentVariable)
await client.LoginUserIfNeeded();
var result = await client.Contacts_ResolveUsername("USERNAME");
//or result= await client.Contacts_ImportContacts(new[] { new InputPhoneContact { phone = "+PHONENUMBER" } });
await client.SendMessageAsync(result.users[0], "Hello");
Mêmes erreurs inexplicables. Solution : augmentez la destination du framework à au moins 4,6 ; Les erreurs disparaissent. Peut-être les pages de support officielles à
https://telegrambots.github.io/book/1/quickstart.html
sont un peu déroutants et disent : « … un projet .NET ciblant les versions 4.5+ »
Au revoir
Jetez un œil et apprenez à faire une requête HTTP POST avec votre langue préférée.
Ensuite, la documentation vous dira comment utiliser l’API Telegram Bot :
6e
Pas la réponse que vous cherchez ? Parcourir les autres questions signalées C # API Telegram ou posez votre propre question.
long-cs
