我想使用Telegram API来确认给定用户是指定组的成员。我可以成功验证用户给出的电话号码和他们发送的代码,但除此之外,我很遗憾。我以为我可以使用client.contactsSearch
开始@groupname
,但这会返回一个空的向量。
我使用的是Scala的Kotlogram库,但它只是MT协议的一个薄包装。
答案 0 :(得分:1)
对于Bot API,您可以使用getChatMember方法。
答案 1 :(得分:0)
这就是我最终想出来的。不过,我不知道这是否是最佳方法。
val PhoneNumber = "+1..."
val app = new TelegramApp(..., "...", "...", "0.0.1", "0.0.1", "en")
class ApiStorage extends TelegramApiStorage {
...
}
val client = Kotlogram.getDefaultClient(app, new ApiStorage)
val sentCode = client.authSendCode(false, PhoneNumber, true)
val code = scala.io.StdIn.readLine()
val authorization = client.authSignIn(PhoneNumber, sentCode.getPhoneCodeHash, code)
val self = authorization.getUser.getAsUser
val name = s"${self.getFirstName} ${self.getLastName}"
val userInput = new TLInputUser(self.getId, self.getAccessHash)
client.contactsSearch("@groupname", 100).getChats.toArray.map(_.asInstanceOf[TLChannel]).find(_.getUsername == "groupname") match {
case Some(channel) =>
val channelInput = new TLInputChannel(channel.getId, channel.getAccessHash)
val isMember = Try { client.channelsGetParticipant(channelInput, userInput) } map { _ => true } getOrElse false
if (isMember) {
println("Is a member")
} else {
println("Is not a member")
}
case None =>
println("Can't find channel @groupname")
}
client.close()