【发布时间】:2015-03-31 08:26:49
【问题描述】:
我找不到通过 C# 电报协议发送消息的示例。我尝试使用this 但失败了。 可以举个例子吗?
【问题讨论】:
-
你有什么问题?
-
会员一年后的第一条消息?欢迎来到SO。如果你想要一些帮助,你必须先帮助自己。 What have you tried 到目前为止?
我找不到通过 C# 电报协议发送消息的示例。我尝试使用this 但失败了。 可以举个例子吗?
【问题讨论】:
TLSharp 是 Telegram API 在 C# 上的基本实现。看这里https://github.com/sochix/TLSharp
【讨论】:
对于我的机器人,我使用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...");
}
}
【讨论】:
您可以使用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");
【讨论】:
最简单的方法是将http请求作为url字符串直接发送到Telegram BOT API,您甚至可以在浏览器中测试这些url字符串,请在我的另一个答案中查看详细信息: https://stackoverflow.com/a/57341990/11687179
【讨论】:
第一步,您必须在 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,可以完全满足您的需求,不过您必须查看 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。
【讨论】: