如何用Python制作Facebook Messenger Bot?

2021年11月16日19:09:37 发表评论 1,079 次浏览

使用 fbchat 库在 python 中制作 Facebook Messenger 聊天机器人,你可以制作自定义的自动消息和机器人,获取用户信息,以及更多方便的工具。

Python制作Facebook Messenger Bot:能够在 Facebook messenger 中自动化东西并制作有用的机器人似乎很有趣也很酷,在本教程中,我们将看到如何在 Facebook Messenger 中使用 Python 连接并做各种不同的很酷的事情!

Python如何制作Facebook Messenger Bot?我们将使用fbchat库,它通过模拟浏览器来工作。这意味着执行完全相同的GET/POST请求并诱使 Facebook 认为它正在正常访问网站。因此,此 API 不是官方的,它不需要任何 API 密钥,而是需要你的 Facebook 帐户凭据。

相关: 如何在 Python 中制作电报机器人。

首先,你需要安装fbchat库

pip3 install fbchat

现在开始,创建一个空的 python 文件或打开一个交互式 shell 或 jupyter notebook 并继续,让我们导入fbchat:

from fbchat import Client
from fbchat.models import Message

我们先登录:

# facebook user credentials
username = "username.or.email"
password = "password"
# login
client = Client(username, password)

注意:你需要输入正确的 Facebook 凭据,否则跟随本教程将没有任何意义。

我们现在有了客户端对象,里面有很多有用的方法,试试 dir()吧。

例如,让我们获取你最近与之交谈的用户:

# get 20 users you most recently talked to
users = client.fetchThreadList()
print(users)

这将产生一个线程列表,一个线程可以是一个用户或一个组。

Python制作Facebook Messenger Bot:让我们搜索我们最好的朋友,让我们获取有关这些用户的所有信息:

# get the detailed informations about these users
detailed_users = [ list(client.fetchThreadInfo(user.uid).values())[0] for user in users ]

对我们来说幸运的是,一个线程对象有一个message_count属性来计算你和那个线程之间的消息数,我们可以按这个属性排序:

# sort by number of messages
sorted_detailed_users = sorted(detailed_users, key=lambda u: u.message_count, reverse=True)

我们现在有一个按message_count排序的 20 个用户列表,让我们通过以下方式轻松获得最好的朋友:

# print the best friend!
best_friend = sorted_detailed_users[0]
print("Best friend:", best_friend.name, "with a message count of", best_friend.message_count)

让我们通过发送消息来祝贺这位朋友:

# message the best friend!
client.send(Message(text=f"Congratulations {best_friend.name}, you are my best friend with {best_friend.message_count} messages!"),
            thread_id=best_friend.uid)

让我看看消息:

如何用Python制作Facebook Messenger Bot?

很棒,对吧?

Python如何制作Facebook Messenger Bot?如果你想在 Messenger 中获取所有与你交谈过的用户,你可以通过:

# get all users you talked to in messenger in your account
all_users = client.fetchAllUsers()
print("You talked with a total of", len(all_users), "users!")

最后,完成后,请确保注销:

# let's logout
client.logout()

Python制作Facebook Messenger Bot:如你所见,你可以使用此库实现无限可能,你可以制作自动回复消息、聊天机器人、回声机器人以及更多很酷的功能。请查看他们的官方文档

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: