在 Telegram 中将电话号码交换为用户 ID

Exchange telephone number for user id in Telegram

我在 groovy 中写了一个 Telegram Bot,这是小菜一碟。

现在为了注册合适的 webhook,我需要获取用户的 ID。

我读到,我应该调用 auth.sendCode 方法来启动该过程。

有没有更简单的替代方法?

如果没有,我如何才能以最小的努力调用 sendCode 并且可能 w/o 任何其他依赖项?使用普通 java 或 curl 的任何示例或指针都很好。

经过一番研究,我得出了一个简单的解决方案。

我没有通过 MTProto 针对 Telegram API 进行身份验证,而是逆转了该过程。我实施了一个新的机器人命令:

/login {my-user-id}

以便用户在 Telegram 机器人聊天中发送他的 ID(可以是稍后生成的一些令牌)并且机器人发送此消息 - 以及 Telegram 用户 ID! - 通过 webhook 连接到我的服务器,我在其中进行匹配和保存。

实现如下所示:

switch( json.message.text ){
  case ~/\/login \w+/: 
    String userId
    text.toLowerCase().eachMatch( /\/login (\w+)/ ){ userId = it[ 1 ] }
    String telegramUserId = json.message.from.id
    saveJoin userId, telegramUserId
    break
 }