使用Telegram API for Java Desktop App?

2022-09-01 17:46:25

我对Java编程并不陌生,但我从未使用过外部库等。现在我想为“Telegram”开源消息传递平台开发一个桌面客户端,但在API使用方面,我陷入了困境。

https://core.telegram.org/api 可以找到很多关于Telegram API的文档,我已经从github下载了mtproto,telegram-api和tl-core,并使用gradle从源代码编译了我自己的库jar。同样,我已经编写了一个小应用程序,用户单击一个按钮并被要求输入他的电话号码,我正在使用Java-swing-Libraries和ActionListener来实现这一点。

用户输入的电话号码现在应该被检查,如果它已经注册,auth.checkPhone方法似乎可以做到这一点。但是,如何在我的 eclipse 项目中引用它呢?我在任何类中都看不到任何方法“checkPhone”!我该怎么办?

请帮助我,我无法帮助自己,我拼命地被困在我的项目中。即使是一个小小的提示也会有所帮助。

提前致谢,卢卡斯


答案 1

从本质上讲,您必须在ex3ndr/telegram-api存储库中填写GitHub上给出的代码中的空白。如果您已经将构建的库 Jar 文件和该文件放在 Eclipse 项目的 Java 构建路径上,请查看自述文件的 RPC 调用部分,然后查看tl-api-v12.jar

首先,您需要使用API凭证设置一个对象,然后您还必须创建一些实现和接口的新类。一旦这些可用,您就可以创建对象并对电报服务进行RPC调用,如下所示;在这种情况下,使用建议的auth.checkPhone方法:AppInfoAbsApiStateApiCallbackTelegramApi

// TODO set up AbsApiState, AppInfo and ApiCallback objects
TelegramApi api = new TelegramApi(state, appInfo, apiCallback);

// Create request
String phoneNumber = "1234567890";
TLRequestAuthCheckPhone checkPhone = new TLRequestAuthCheckPhone(phoneNumber);

// Call service synchronously
TLCheckedPhone checkedPhone = api.doRpcCall(checkPhone);
boolean invited = checkedPhone.getPhoneInvited();
boolean registered = checkedPhone.getPhoneRegistered();
// TODO process response further

该对象表示您与远程服务的连接,远程服务是 API 的请求响应样式。RPC 调用是通过该方法进行的,该方法从使用相应参数填充的包(示例中的类型)中获取请求对象。然后返回响应对象(如上所示),并在结果可用时返回该响应对象。TelegramApidoRpcCallorg.telegram.api.requestsTLRequestAuthCheckPhoneTLCheckedPhone

在异步调用的情况下,该方法立即返回,并在结果可用时执行回调方法:onResult

// Call service aynchronously
api.doRpcCall(checkPhone, new RpcCallbackEx<TLCheckedPhone>() {
    public void onConfirmed() { }
    public void onResult(TLCheckedPhone result) {
        boolean invited = checkedPhone.getPhoneInvited();
        boolean registered = checkedPhone.getPhoneRegistered();
        // TODO process response further
    }
    public void onError(int errorCode, String message) { }
});

答案 2

或者看看这个API https://github.com/pengrad/java-telegram-bot-api

使用起来非常简单


推荐