【问题标题】:Telegram C# example send messageTelegram C# 示例发送消息
【发布时间】:2015-03-31 08:26:49
【问题描述】:

我找不到通过 C# 电报协议发送消息的示例。我尝试使用this 但失败了。 可以举个例子吗?

【问题讨论】:

  • 你有什么问题?
  • 会员一年后的第一条消息?欢迎来到SO。如果你想要一些帮助,你必须先帮助自己。 What have you tried 到目前为止?

标签: c# .net telegram


【解决方案1】:

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

【讨论】:

  • 我通过在此处注册 (my.telegram.org/auth) 获得了 API 哈希 .. 但是执行上述代码失败,说明您的哈希未注册。
  • 通过那条线路接收消息怎么样?也可以吗?
  • 是的,如果我们找到贡献者或有人为此功能捐款,这将是可能的
  • 亲爱的@SochiX 我正在使用你的库,但由于文档周刊,它很难理解和使用
  • 它是开源的,因此欢迎您为文档改进做出贡献!
【解决方案2】:

对于我的机器人,我使用Telegram.Bot nuget 包。完整示例代码为here

这是发送消息以回复传入消息的示例。

// create bot instance
var bot = new TelegramBotClient("YourApiToken");

// test your api configured correctly
var me = await bot.GetMeAsync();
Console.WriteLine($"{me.Username} started");

// start listening for incoming messages
while (true) 
{
    //get incoming messages
    var updates = await bot.GetUpdatesAsync(offset);
    foreach (var update in updates)
    {
        // send response to incoming message
        await bot.SendTextMessageAsync(message.Chat.Id,"The Matrix has you...");
    }
}

【讨论】:

  • 问题是关于 Telegram API。与机器人 API 无关。
【解决方案3】:

您可以使用WTelegramClient 库连接到 Telegram Client API 协议(作为用户,而不是机器人)

该库非常完整,但也非常易于使用。关注README on GitHub简单介绍。

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

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");

【讨论】:

    【解决方案4】:

    最简单的方法是将http请求作为url字符串直接发送到Telegram BOT API,您甚至可以在浏览器中测试这些url字符串,请在我的另一个答案中查看详细信息: https://stackoverflow.com/a/57341990/11687179

    【讨论】:

      【解决方案5】:

      第一步,您必须在 botfather 中生成一个机器人,然后在 C# 中使用下面的代码

          private void SendMessage(string msg)
          {
              string url = "https://api.telegram.org/{botid}:{botkey}/sendMessage?chat_id={@ChanalName}&text={0}";
              WebClient Client = new WebClient();
              /// If you need to use proxy 
              if (Program.UseProxy)
              {
                  /// proxy elements are variable in Program.cs
                  Client.Proxy = new WebProxy(Program.ProxyUrl, Program.ProxyPort);
                  Client.Proxy.Credentials = new NetworkCredential("hjolany", "klojorasic");
              }
              Client.DownloadString(string.Format(url, msg));
              }));
          }
      

      【讨论】:

      • 问题是关于 Telegram API 而不是 BOT Api。
      【解决方案6】:

      Telegram 有一个官方 API,可以完全满足您的需求,不过您必须查看 http 请求..

      这里是发送消息的文档:

      功能

      messages.sendMessage
      

      参数

      peer    InputPeer   User or chat where a message will be sent
      message string  Message text
      random_id   long    Unique client message ID required to prevent message resending
      

      查询示例

      (messages.sendMessage (inputPeerSelf) "Hello, me!" 12345678901)
      

      返回错误

      Code    Type    Description
      400 BAD_REQUEST PEER_ID_INVALID Invalid peer
      400 BAD_REQUEST MESSAGE_EMPTY   Empty or invalid UTF8 message was sent
      400 BAD_REQUEST MESSAGE_TOO_LONG    Message was too long.
      
      Current maximum length is 4096 UTF8 characters
      

      如需完整文档,请转至here

      【讨论】:

      • 我看到官方 API,但我不明白如何使用它。一些解决方案可以快速启动授权等。
      • this 是关于如何进行身份验证的一个很好的解释,但如果您知道使用 c# 的 http 请求,这不会很难实现。
      • 我同意,但是一些解决方案已经实现了异步请求协议并支持加密。
      • 我们可以如何将查询发送到 DC 并等待重播我读了很多关于 serlizing 和 TL 语言和有效负载的信息,但我没有成功发送查询以发送验证码
      • @KhalidOmar 你能走多远?您是否超出了 AuthKey 部分?我希望有更好的文档,它比实际更难
      猜你喜欢
      • 2015-10-15
      • 2014-12-28
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多