38

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

谁能给个简单的代码?我可以简单地进行 HTTP 调用吗?

4

9 回答 9

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

您现在可以在所有方法中传递频道用户名(格式为@channelusername)来代替 chat_id(而不是 forwardMessage 中的 from_chat_id)。为此,机器人必须是频道中的管理员。

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

于 2015-11-06T06:26:25.640 回答
20

这是迄今为止我发现的最简单的方法。我在这里找到了,感谢 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 您可以使用以下 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 字符串。这是我在 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);
}
于 2019-08-03T20:50:00.933 回答
14

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

    }
 }}
于 2016-12-10T00:02:47.813 回答
6

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

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

3-将@myTestBot 作为管理员用户添加到您的频道(@mychanel)

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

   var bot = new TelegramBotClient("api_token_bot");
        var s = await bot.SendTextMessageAsync("@mychanel", "your_message");
于 2016-11-14T05:59:55.627 回答
2

现在有WTelegramClient,使用最新的 Telegram Client API 协议(以用户身份连接,而不是机器人)。

该库非常完整,但也非常易于使用。按照GitHub 上的 README进行简单介绍。

向某人发送消息可以很简单:

using TL;

using var client = new WTelegram.Client(); // or Client(Environment.GetEnvironmentVariable)
await client.LoginUserIfNeeded();
var result = await client.Contacts_ResolveUsername("USERNAME");
await client.SendMessageAsync(result.User, "Hello");

//or by phone number:
//var result = await client.Contacts_ImportContacts(new[] { new InputPhoneContact { phone = "+PHONENUMBER" } });
//client.SendMessageAsync(result.users[result.imported[0].user_id], "Hello");
于 2021-10-15T03:09:47.557 回答
2

这段代码对我有用:

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;
    }
}
于 2021-05-20T16:21:11.807 回答
1

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

Github 网址:github.com/mrtaikandi/Telebot

Nuget URL:nuget.org/packages/Telebot

于 2015-09-09T14:54:54.107 回答
0

同样莫名其妙的错误。解决方案:将框架 dastination 提升到最低 4.6;错误消失。也许官方支持页面位于

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

有点令人困惑的说法是:“......针对版本 4.5+ 的 .NET 项目”

再见

于 2020-03-13T14:18:19.423 回答
-5

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

然后通过文档了解如何使用 Telegram Bot API:

于 2015-07-07T21:07:47.903 回答