26

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

在https://core.telegram.org/api上有很多关于 Telegram API 的文档,我已经从 github 下载了 mtproto、telegram-api 和 tl-core,并从源代码编译了我自己的库 jar通过使用 gradle。同样,我已经编写了一个小应用程序,用户单击一个按钮并提示输入他的电话号码,为此我使用了 Java-swing-Libraries 和 ActionListener。

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

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

提前致谢, 卢卡斯

4

2 回答 2

20

本质上,您必须填写 GitHub 上ex3ndr/telegram-api存储库中给出的代码中的空白。如果你有你构建的库 Jar 文件和tl-api-v12.jarEclipse 项目的 Java 构建路径上的文件,那么查看 README 的RPC Calls部分和

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

// 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

TelegramApi对象代表您与远程服务的连接,这是一种 API 的请求响应样式。RPC 调用是通过该方法进行的,该方法从包(示例中的类型)中doRpcCall获取一个请求对象,并填充了适当的参数。然后返回一个响应对象(如上),当它可用时,它会与结果一起返回。org.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) { }
});
于 2014-06-29T00:32:25.327 回答
0

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

使用起来真的很简单

于 2016-08-30T20:46:07.053 回答