使用Telegram API for Java Desktop App?

时间:2014-03-25 12:57:37

标签: java eclipse swing api telegram

我不是Java编程的新手,但我从未使用过外部库等。现在我想为“Telegram”开源消息传递平台开发一个桌面客户端,当涉及到API-用法。

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

现在应该检查用户输入的电话号码是否已经注册,auth.checkPhone方法似乎能够进行注册。但是我怎么能在我的eclipse项目中引用它呢?我没有在任何类中看到任何方法“checkPhone”!我该怎么办?

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

先谢谢, 卢卡斯

2 个答案:

答案 0 :(得分:18)

基本上,您必须填写ex3ndr/telegram-api存储库中GitHub上给出的代码中的空白。如果您已经构建了自己构建的库文件以及Eclipse项目的Java构建路径上的tl-api-v12.jar文件,那么请查看README的RPC Calls部分和

首先,您需要使用API credentials设置AppInfo对象,然后您还必须创建一些实现AbsApiStateApiCallback接口的新类。一旦这些可用,您可以创建TelegramApi对象并对Telegram服务进行RPC调用,如下所示;在这种情况下使用建议的auth.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.requests包中获取请求对象(示例中为TLRequestAuthCheckPhone类型),并使用适当的参数填充。然后返回一个响应对象(上面为TLCheckedPhone),并在结果可用时返回该结果。

在异步调用的情况下,该方法立即返回,并且在结果可用时执行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) { }
});

答案 1 :(得分:1)

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

使用起来非常简单