使用 Python 和 AWS Lambda 构建 Twitter 机器人
我觉得机器人很棒。我很喜欢宝可梦卡牌上的图案。所以我做了一个推特机器人,每六个小时发两张宝可梦卡牌,就像游戏里的宝可梦对战一样。
您可以在@tinyversusbot上查看 Twitter 机器人,如果您想看看与您一起开始冒险的 Pokémon 团队,请访问tinyversusbot。
以下是我如何使用 Python 和 AWS Lambda 创建此机器人的概述。
概括
-
tweepy
使用库将 Twitter 开发者帐户链接到你的 Python 项目 -
将您的项目添加到 AWS Lambda 以按间隔发送推文
分解
第一部分:Twitter 开发者账户和tweepy
Python 库
1. 创建 Twitter 帐户
如果您还没有创建,您需要创建一个 Twitter 帐户,以便您的机器人能够使用该帐户发推文。您可以在这里注册。
2. 创建 Twitter 开发者账户您可以在此处
创建您的 Twitter 开发者账户。将此账户与您在步骤 1 中创建的 Twitter 账户连接起来。
3. 通过 Tweepy 连接到您的 Twitter 帐户
我使用了tweepy
此机器人的库 - 您需要安装它。
pip install tweepy
导入tweepy并设置授权。
import tweepy
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
以下是一些推文代码示例:
# Standard tweet
# var tweet || inline string
api.update_status(status=tweet)
## Tweet with media (multiple images)
api.update_status(status=tweet, media_ids=mediaIds)
注意:您无法直接从图片的网址发送推文。您必须先将图片存储在本地才能使用。
查看他们的文档以了解其他tweepy
能力。
第 2 部分:在 AWS Lambda 上设置您的机器人
1. 创建 AWS 账户如果您还没有 AWS 账户,
请注册一个。
2. 创建您的 Lambda 函数
转到Lambda 服务,单击“函数”,然后单击“创建函数”。为您的函数命名,选择适当的运行时,然后单击“创建函数”。
在 Lambda 函数中,您可以直接将代码放入lambda_function.py
AWS 代码编辑器中,也可以创建自己的文件。请勿删除lambda_handler
Lambda 运行时需要返回状态码的函数。
return
在函数上方lambda_handler
,调用您的推文函数。
2.5. 添加环境变量
我最初将此代码提交到 GitHub 并部署到 Heroku,因此我设置了环境变量 - 这样我就可以连接到 Twitter API 而无需提交我的秘密。
当我将推文代码移至 AWS Lambda 时,我仍然创建了环境变量以将任何凭据排除在代码之外。
将您的授权密钥和机密添加为环境变量并更新您的代码。
下面是我将消费者密钥声明为环境变量的示例:
CONSUMER_KEY = environ['CONSUMER_KEY']
3. 添加层。
我导入了一些 Lambda 原生未安装的 Python 包。层存储依赖项,可供其他函数使用。因此,如果您恰好创建了大量使用相同库的 Twitter 机器人,则无需为每个新函数重新打包它们。
你的 Python 库需要以压缩文件夹的形式导入到python
子目录中。我的压缩文件夹结构如下:
layer > python > my python libraries
在 Lambda 仪表板上,创建一个新层并上传 .zip 文件。返回 Lambda 函数并添加新层。要测试并确认一切正常,请点击 Designer 面板上方的“测试”按钮。
如果你的 Twitter 账户上有新推文,恭喜!成功了!
4. 添加 CloudWatch 触发器
现在我们需要添加一个触发器,让它以特定的时间间隔自动运行,以便你的机器人能够自行发推文。我的机器人没有任何特殊要求,只需要每六小时发布一次推文,所以我将它设置为每六小时固定一次的定时发布。
前往您的 CloudWatch 服务并创建新规则(在“事件”选项卡下)。为您的 Lambda 函数设置一个新目标,然后按“配置详细信息”。
完成所有这些之后,我的设计器面板如下所示:
5. 大功告成!
你的 Twitter 机器人应该已经激活并可以自行运行了。
注意默认超时设置。我的代码在默认时间后就超时了,所以我不得不增加超时设置。如果你的程序运行时间超过默认的 30 秒,则需要增加超时设置。
在 AWS Lambda 的免费套餐中,您每月可免费获得 100 万个请求。如果您计划超出免费套餐的限制,请密切关注您消耗的计算时间。您可以在 Lambda 函数的“监控”选项卡中找到 CloudWatch 指标。
文章来源:https://dev.to/jeannienguyen/building-a-twitter-bot-with-python-and-aws-lambda-27jg祝您机器人开发愉快!欢迎在下方分享您的 Twitter 机器人。