web-dev-qa-db-ja.com

C#でTelegram APIを使用してメッセージを送信する方法

簡単なメッセージを番号に送信するには、C#でTelegram APIを使用します。 GitHubでいくつかのlibを見つけましたが、それらを使用することはできません。

誰でも簡単なコードを提供できますか?単にHTTP呼び出しを行うことはできますか?

18
Hadi Delphi
  1. インストールパッケージTelegram.Bot
  2. ボットファーザーを使用してボットを作成する
  3. / tokenコマンドを使用してAPIキーを取得します(まだボットファーザーにあります)
  4. このコードを使用してください:

var bot = new Api("your api key here"); var t = await bot.SendTextMessage("@channelname or chat_id", "text message");

すべてのメソッドのchat_idの代わりに(およびforwardMessageのfrom_chat_idの代わりに)チャネルのユーザー名(@channelusernameの形式)を渡すことができるようになりました。これが機能するには、ボットがチャンネルの管理者である必要があります。

https://core.telegram.org/bots/api

11
arlak

このコードを使用してください:) 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);
                }
            }
        }

    }
 }}
9

1-最初に電報でチャンネルを作成します(@mychanelなど)

2-テレグラムボット(@myTestBotなど)を作成し、次のステップのAPIトークンを取得します

3-管理者ユーザーとして@myTestBotをチャネル(@mychanel)に追加します

4-送信メッセージの以下のコードを使用:

   var bot = new TelegramBotClient("api_token_bot");
        var s = await bot.SendTextMessageAsync("@mychanel", "your_message");
3
jiji2663

これが私がこれまで見つけた最も簡単な方法です。パオロ・モンタルトのおかげでここで見つけました https://medium.com/@xabaras/sending-a-message-to-a-telegram-channel-the-easy-way-eb0a0b32968

BotFatherを介してTelegramボットを作成し、https://api.telegram.org/bot[YourApiToken]/getUpdatesを介して宛先IDを取得した後、次のURLでTelegram BOT APIにHTTP GETリクエストを発行することにより、IDにメッセージを送信できますhttps://api.telegram.org/bot[YourApiToken]/sendMessage?chat_id=[DestitationID]&text=[MESSAGE_TEXT]

ボットを作成してIDを取得する簡単な方法の詳細は、ここにあります: https://programmingistheway.wordpress.com/2015/12/03/send-telegram-messages-from-c/

これらのURL文字列は、ブラウザーで直接テストすることもできます。これは、ボットAPI関連のDLLや非同期呼び出しの複雑さに依存せずに、メッセージを送信するためにC#で使用する簡単な方法です。

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
VVP

開始する良い記事: How-To:C#からTelegramにメッセージを送信する

TLSharpは、C#でのTelegram APIの基本的な実装です。こちらをご覧ください https://github.com/sochix/TLSharp

2
Ilya P

TelegramボットのAPIにアクセスするためのクライアントライブラリを作成しました。そのソースコードはGithubで入手できます。 Telebot.csファイルを参照して、ボットAPIにメッセージを送信する方法のサンプルを確認できます。

Github URL: github.com/mrtaikandi/Telebot

Nuget URL: nuget.org/packages/Telebot

1
mrtaikandi