Python fbchat 库2024 年 8 月 29 日 | 阅读 12 分钟 像 Python 这样的编程语言之所以强大,是因为它为用户提供了广泛的模块和库。这一次我们将探索其中之一。我们每个人都可能在某个时候想向我们的 Facebook 朋友发送消息(或垃圾邮件)。能够自动化活动并在 Facebook Messenger 中创建支持机器人似乎很有趣。在下面的教程中,我们将了解如何使用 Python 编程语言连接到 Facebook Messenger 并执行各种令人惊叹的事情。 此声明意味着我们将执行相同的 GET/POST 请求,并欺骗 Facebook 认为它正在正常访问网站。我们将需要一个名为 fbchat 的 Python 库,它允许程序员模拟浏览器进行此操作。因此,此应用程序编程接口 (API) 不是官方的,并且不需要任何 API 密钥。但是,它需要 Facebook 帐户的凭据。 那么,让我们开始吧。 Python fbchat 库简介Python 编程语言中的 fbchat 库利用电子邮件 ID 和密码与 Facebook 服务器进行通信。这意味着如果有人在编写代码时窥探,我们应该始终将密码存储在单独的文件中。我们还应该确保文件的访问控制具有适当的限制。 为了安装 fbchat 库,我们将使用 pip 安装程序,命令如下: 语法 为了验证库是否正确安装,我们可以创建一个新文件并添加 import 语句,查看它是否返回任何错误。 文件:verify.py 现在,保存 Python 文件并使用命令行运行执行命令 语法 如果上面的 Python 文件没有引发任何导入错误,我们就可以继续构建 Facebook Messenger 机器人了。但是,如果它确实引发了异常,建议重新安装库并查阅其官方文档。 现在,让我们了解 fbchat 库的基础知识。 登录我们可以简单地创建 fbchat 库的 Client 类的实例。如果启用了双重身份验证,我们需要在终端提示符中键入代码(如果我们要以另一种方式提供代码,我们可以覆盖 Client.on2FACode 函数)。 现在让我们在以下语法中查看相同的内容 示例 说明 在上面的代码片段中,我们从 fbchat 库导入了 Client 类以及 fbchat.models 中的函数。我们定义了 Facebook 帐户的 username 和 password。最后,我们创建了一个 Client 类的对象,将其 username 和 password 作为参数,这允许我们访问 Facebook 帐户。 上面提供的 username 和 password 仅演示了 Client 类的功能,并没有实现实际目的。但是,需要分别用实际的电子邮件 ID 和密码替换变量字符串。 不正确的用户名和密码可能会在连接到 Facebook 帐户时导致异常。 在整个代码中,如果我们想检查是否仍然登录,我们可以使用 Client 类的 isLoggedIn() 函数。 我们可以使用 Client 类的 login() 函数登录到 Facebook 帐户。 让我们考虑以下示例,如果退出,我们希望再次登录。 示例 说明 在上面的代码片段中,我们使用 if 语句通过 isLoggedIn() 函数检查是否已登录 Facebook 帐户。我们还使用了 login() 函数,指定 username 和 password,以便在退出时再次登录。 一旦我们使用完客户端并希望安全注销,我们将使用 logout() 函数。 其语法如下所示 示例 说明 在上面的代码片段中,我们使用了 Client 类的 logout() 函数以及 Client 的对象来注销。 理解线程线程可以被视为两件事:Messenger 群聊或单个 Facebook 用户。 ThreadType 是一个枚举器,有两个值。第一个值是 USER,另一个是 GROUP。这些将指定线程是单用户还是群聊。这对于 fbchat 库的多个函数是必需的,因为 Facebook 可以在内部区分这两者。 我们可以使用 Client 类的 searchForGroups 方法搜索群聊并找到它们的 ID。我们还可以使用 searchForUsers 方法搜索用户。我们将在本教程后面查看它。 我们可以借助 Client 类的 uid 方法检索我们的用户 ID。 我们还可以检索群聊 ID。但是,其过程非常简单。我们只需导航到 https://#/messages/,然后单击我们要查找 ID 的群组,然后从地址栏中读取 ID。URL 将显示如下:https://#/messages/t/123456789,其中 123456789 将是群聊的 ID。 我们可以将相同的方法应用于多个用户帐户,尽管如果他们设置了自定义 URL,我们只会看到该 URL。 让我们考虑以下代码片段,演示线程 ID 和线程类型的利用。 示例 说明 在上面的代码片段中,我们开始导入所需的库并提供 username 和 password。然后我们创建了一个 Client 类的对象。之后,我们使用了 send() 函数,指定了文本消息以及线程 ID 和线程类型为 USER 和 GROUP。最后,我们使用 logout() 函数注销。 我们可以观察到我们提供了线程 ID 和线程类型来启动函数。但是,有些函数根本不需要线程类型。一个这样的函数可以是 changeThreadColor。在这种情况下,我们必须提供线程 ID。 让我们看下面的例子来演示这一点: 示例 说明 在上面的代码片段中,我们导入了所需的模块并提供了 username 和 password。然后我们创建了一个 Client 类的对象。然后我们使用了 Client 类的 changeThreadColor 函数来更改线程的颜色。我们在函数中指定了线程颜色和线程 ID。最后,我们使用 logout() 函数注销。 理解消息 ID我们在 Facebook 上发送的每条消息都包含一个唯一的 ID,并且我们在线程中执行的每个活动,例如更改昵称或添加人员,都有一个唯一的 ID。 fbchat 库的一些函数需要这些 ID,例如 reactToMessage,其中一些函数提供此 ID,例如 sendMessage。 让我们考虑以下示例,演示这些函数的使用。 示例 说明 在上面的代码片段中,我们导入了所需的方法并提供了 username 和 password。然后我们创建了一个 Client 类的对象。然后我们使用 send() 函数检索了消息 ID。然后我们使用消息 ID 通过 reactToMessage() 对消息进行反应,我们在其中指定了 messageID 以及 MessageReaction 作为 LOVE 表情符号。 与线程交互fbchat 库提供了不同的功能,以便我们与线程交互。 大多数功能适用于所有线程,尽管某些功能(例如将用户添加到群聊和从群聊中删除用户)逻辑上仅适用于群聊。 下表描述了一些用于与线程交互的函数
让我们考虑以下示例,演示在与线程交互中使用上述函数。 示例 说明 在上面的代码片段中,我们导入了所需的模块并提供了 username 和 password。我们创建了一个 Client 类的实例并指定了线程 ID 和类型。然后我们使用了不同的函数来与线程交互,从发送文本消息和表情符号到更改线程颜色和表情符号。由于我们正在处理 GROUP 聊天,我们还使用了涉及从群组中添加和删除用户的操作。我们还使用了发送本地图像以及特定 URL 上的图像的函数。 现在,让我们了解如何使用 fbchat 库获取信息。 获取信息我们可以利用 fbchat 库来获取有关用户的基本信息,例如他们的用户名、个人资料图片、线程名称和用户 ID。 我们可以使用 Client 类的 searchForUsers 函数检索用户 ID。让我们考虑以下示例,它演示了允许我们获取用户信息的功能。 示例 说明 在上面的代码片段中,我们导入了所需的模块并创建了一个 Client 类的实例。然后我们使用了 searchForUsers 函数来检索用户 ID。然后我们将第一个用户的值存储在一个变量中。最后,我们使用 uid, name, photo, url 函数打印了用户的信息。 由于此示例利用了 Facebook 的搜索功能,我们不必指定完整的名称;通常只需名字就足够了。 现在让我们了解会话。 理解会话fbchat 库提供了检索和设置会话 cookie 的功能。此功能将允许我们将会话 cookie 存储在单独的文件中,这样我们就不必每次启动脚本时都登录。 我们可以使用 Client 类的 getSession 函数检索 cookie。其语法如下所示 语法 然后我们可以使用 Client 类的 setSession 函数来设置会话。其语法如下所示 语法 或者我们可以在初始登录时设置 session_cookies。(如果会话 cookie 无效,将使用电子邮件和密码登录) 语法 警告: 会话 cookie 和密码一样有价值,因此请同样小心地存储它们。 监听和事件fbchat 库还提供了监听功能,例如 Client 类的 listen 函数,我们需要定义当某些事件发生时应该执行什么。默认情况下,(大多数)事件将只是一个 logging.info 语句,这意味着当事件发生时它只会将详细信息打印到控制台。 注意:我们可以通过事件方法的 on 前缀来识别它们。例如,onMessage。我们可以通过子类化 Client 然后覆盖事件方法来更改事件操作,如下所示 语法 说明 在上面的语法中,我们定义了 Client 类的子类为 Custom_Client。在该类中,我们定义了一个名为 onMessage 的方法,该方法接受多个参数,例如 self, mid, author_id, message_object, thread_id, thread_type, ts, metadata, msg 和 **kwargs。可以在此方法中编写一些功能。最后,我们实例化了 Custom_Client 类,并将其 username 和 password 作为其参数。 即使我们更改了方法的参数,onMessage 方法也可以工作;但是,我们必须在其中包含 **kwargs。 注意:因此,为了向后和向前兼容,API 要求我们包含 **kwargs 作为最后一个参数。更多信息请参见官方文档: https://fbchat.readthedocs.io/en/stable/intro.html |
在软件开发人员、工程师和数据科学家中,Python 是一种备受欢迎的编程语言。其广泛的库和模块集合使得处理数据、图形和用户界面变得简单。PyQtGraph 就是一个广受欢迎的用于开发交互式实时视觉效果和可视化内容的包。您将学习...
阅读 3 分钟
在本教程中,我们将学习一些操作字符串的酷操作。我们将看到如何以 Python 风格操作字符串。字符串是每个 Python 程序员都使用的基本且必不可少的数据结构。在 Python 中,字符串是一个序列...
5 分钟阅读
在我们的环境中,数据随机分布,其中一些数据指的是数据集曲线的峰值,而一些数据点指的是曲线的尾部。对于任何数据集,我们都可以使用其方差和均值来计算分布...
阅读 3 分钟
数据框的值会逐步被其他品质所取代。这与使用 .loc 或 .iloc 进行更新不同,后者要求您指定一个位置以用某个值进行更新。to_replace: str, regex, list, dict, Series, int, float, or None 查找的最有效方法...
阅读 15 分钟
这篇文章将演示如何使用 PyQt5 构建一个颜色游戏。在这个游戏中,玩家必须正确识别所给单词的颜色,以获得最高分。为了进一步迷惑玩家,文本将有多种...
阅读 8 分钟
Python 编程语言为所有类型的项目提供了不同类型的库。同样,Python 拥有各种数据可视化库,以便用户能够非常详细地理解数据集并正确分析它。每个可视化库都有其自身的特点。使用...
阅读 10 分钟
我们可以利用统计包的强大功能来计算任何与统计相关的任务。其中一个函数是 variance()。我们可以借助此方法计算数据样本的方差(样本是总体数据的一小部分)。在计算时可以使用 variance() 函数...
5 分钟阅读
嵌套元组是 Python 元组,它被放置在另一个元组中。让我们看下面的 8 元素元组。tuple = (12, 23, 36, 20, 51, 40, (200, 240, 100)) 这个最后一个元素由三个项组成,用括号括起来,是...
阅读 3 分钟
您可以使用 Python 的 not 运算符反转任何布尔表达式或对象的真值。这个 Python 运算符可以应用于 if-elif 语句以及 for 或 while 循环等布尔条件。它也可以在非布尔环境中运行,使您能够反转变量的真值...
阅读 8 分钟
IDE 与代码编辑器简介:在本文中,我们将讨论 IDE 与代码编辑器。代码编辑器是程序员最重要的关键设备之一,其明确目的是使代码编辑技术更高效、更简单。文本编辑器是...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India