如何在C#中使用Telegram API发送消息

时间:2015-07-07 14:25:04

标签: c# api telegram

我想在C#中使用Telegram API向一个号码发送一条简单的消息。我在GitHub上发现了一些lib,但是我无法使用它们。

任何人都可以提供简单的代码吗?我可以简单地拨打HTTP电话吗?

9 个答案:

答案 0 :(得分:11)

  1. Install-Package Telegram.Bot
  2. 使用botfather创建机器人
  3. 使用/ token命令(仍在bossfather中)获取api密钥
  4. 使用此代码:
  5. var bot = new Api("your api key here"); var t = await bot.SendTextMessage("@channelname or chat_id", "text message");

      

    您现在可以传递频道用户名(格式为@channelusername)   代替所有方法中的chat_id(而不是from_chat_id)   转发信息)。为此,僵尸程序必须是管理员   渠道。

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

答案 1 :(得分:8)

使用此代码:) 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);
                }
            }
        }

    }
 }}

答案 2 :(得分:4)

这是到目前为止我发现的最简单的方法。感谢Paolo Montalto https://medium.com/@xabaras/sending-a-message-to-a-telegram-channel-the-easy-way-eb0a0b32968

,我在这里找到了它

通过BotFather创建Telegram机器人并获取目的地ID之后 通过https://api.telegram.org/bot[YourApiToken]/getUpdates 您可以使用以下网址https://api.telegram.org/bot[YourApiToken]/sendMessage?chat_id=[DestitationID]&text=[MESSAGE_TEXT]

向Telegram BOT API发出HTTP GET请求,以向ID发送消息

有关创建机器人并获取ID的简单方法的详细信息,请参见:https://programmingistheway.wordpress.com/2015/12/03/send-telegram-messages-from-c/

您甚至可以直接在浏览器中测试这些url字符串。 这是我在C#中使用的一种简单方法,用于发送消息,而无需依赖任何与bot api相关的dll和异步调用复杂性:

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 :(得分:2)

要开始的好文章:How-To: Send messages to Telegram from C#

TLSharp是C#上Telegram API的基本实现。在此处查看https://github.com/sochix/TLSharp

答案 4 :(得分:2)

1 - 首先在电报中创建一个频道(例如@mychanel)

2 - 创建一个电报机器人(例如@myTestBot)并获取下一步的api令牌

以管理员用户身份将@myTestBot添加到您的频道(@mychanel)

使用以下4代码发送消息:

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

答案 5 :(得分:1)

我已经编写了一个用于访问Telegram bot的API的客户端库,其源代码可以在Github中找到。您可以浏览到Telebot.cs文件,以查看如何将消息发送到bot API的示例。

Github网址:github.com/mrtaikandi/Telebot

Nuget URL:nuget.org/packages/Telebot

答案 6 :(得分:0)

相同的无法解释的错误。 解决方案:将框架目标提升到最低4.6;错误消失。 也许在以下官方支持页面

https://telegrambots.github.io/book/1/quickstart.html

有点困惑:“ ...面向4.5及更高版本的.NET项目”

再见

答案 7 :(得分:0)

此代码对我有用:

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;
    }
}

答案 8 :(得分:-5)

只需查看并了解如何使用您喜欢的语言发出POST HTTP请求。

然后学习如何将Telegram Bot API与文档一起使用: