Yowsup 如何获取 WhatsApp 电话号码

8 投票
1 回答
8482 浏览
提问于 2025-04-18 01:08

我正在尝试了解如何使用Yowsup这个库来与WhatsApp互动。我可以发送消息,也可以接收消息,但我想知道如何获取电话号码以开始新的聊天。换句话说,我想开发一个可以与WhatsApp用户互动的电脑应用程序,目前我能做到以下几点:

  1. 我通过这个命令获得了WhatsApp服务器的访问权限:python yowsup-cli -c config.example --requestcode smspython yowsup-cli -c config.example --register xxx-xxx
  2. 我可以通过这个命令发送消息:python yowsup-cli -c config.example -s 39xxxxxxxxxx "!"
  3. 我可以通过这个命令进行互动对话:python yowsup-cli -c config.example -i 39xxxxxxxxxx
  4. 我可以通过这个命令获取我收到的所有消息:python yowsup-cli -c config.example -l

现在,当用户给我发消息时,我该如何与他/她互动呢?我想我应该从命令python yowsup-cli -c config.example -l中获取电话号码,然后用这个命令开始新的互动对话:python yowsup-cli -c config.example -i 39xxxxxxxxxx,其中的39xxxxxxxxxx就是我从之前的命令中得到的用户号码。希望你能帮我。

1 个回答

5

我觉得你不应该把yowsup-cli用作开发工具。它其实是个简单的演示客户端,功能非常有限。

如果你查看一下yowsup-cli的源代码,你会发现它实际上是引入了一些示例代码来提供命令行消息功能。

在这段代码中,你会看到你的命令python yowsup-cli -c config.example -l实际上是调用了

wa = WhatsappListenerClient(args['keepalive'], args['autoack'])
wa.login(login, password)

而这个示例监听客户端则注册了一个回调函数,用于处理message_received信号。

self.signalsInterface.registerListener("message_received", self.onMessageReceived)

现在如果你仔细看看这个函数

def onMessageReceived(self, messageId, jid, messageContent, timestamp, wantsReceipt, pushName, isBroadCast):
    formattedDate = datetime.datetime.fromtimestamp(timestamp).strftime('%d-%m-%Y %H:%M')
    print("%s [%s]:%s"%(jid, formattedDate, messageContent))

    if wantsReceipt and self.sendReceipts:
        self.methodsInterface.call("message_ack", (jid, messageId))

你会发现jid,也就是你说需要的电话号码,实际上在这个信号的参数列表中。如果你想在用户给你发消息后与他互动,我猜你应该把jid或电话号码存储在你自己对这个信号的订阅中。

总之,不要直接使用yowsup-cli进行开发。可以把它当作一个起点,来构建你自己的应用。祝你好运!

撰写回答