В этом посте я собираюсь показать вам, как построить бота в Твиттере, используя Без сервера Framework Анкет Эта структура представляет собой «простой и открытый способ создания без серверных приложений», и если вы не знаете, о чем я говорю о вас, обязательно следует проверить это.
Мы собираемся построить бота, который будет ретвитировать через регулярные промежутки времени наиболее релевантные твиты о неверных вычислениях, и следуют за автором твита. Посмотрите здесь Если вы не боитесь спойлеров.
Для этого урока мы используем AWS Lambda со временем выполнения Python 3.6, но вы можете легко переключиться на другой язык провайдера/программирования.
Мы собираемся взаимодействовать с API Twitter, используя Twython Анкет
Прежде всего, вам нужно создать учетную запись Twitter для бота, а затем перейти к Developer.twitter.com Чтобы подать заявку на учетную запись разработчика, чтобы получить доступ к API Twitter.
После этого вы можете создать приложение Twitter и получить необходимые ключи и токены. Интерфейс Twitter прост в использовании, и процесс довольно прост.
Самый простой способ установить Framework без сервера – следовать их руководству по установке, Здесь , а затем настройте учетные данные AWS, как показано Здесь Анкет
Когда фреймворк установлен и настроен, можно легко создать новую службу:
$ serverless create \ --template aws-python3 \ --name serverlessbot \ --path serverlessbot
Тогда, CD
в недавно созданный каталог и создайте виртуальную среду Python, используя Virtualenv
:
$ cd serverlessbot $ virtualenv venv --python=python3
Вам нужно будет активировать виртуальную среду с помощью:
$ source venv/bin/activate
Теперь вы можете установить Twython
Библиотека, а затем сохраните версии среды пакета в Требования.txt
файл.
$ pip install twython $ pip freeze > requirements.txt
На этом этапе мы должны быть готовы начать кодировать бота. Тем не менее, вручную настройка лямбда для использования внешних библиотек может быть сложной, поэтому мы собираемся использовать Без сервера-питона-провозглашения
плагин, чтобы упростить это.
Прежде всего, инициализировать npm
с:
$ npm init
Примите все значения по умолчанию (нажмите введите несколько раз), затем установите плагин с:
$ npm install --save serverless-python-requirements
Наконец, добавьте следующее в конце вашего Serverless.yml
файл:
plugins: - serverless-python-requirements custom: pythonRequirements: dockerizePip: non-linux
Вы можете найти больше информации об этом плагине Здесь Анкет
Теперь мы можем наконец начать строить бота.
Мы должны изменить функции
раздел в Serverless.yml
Файл, чтобы выглядеть так:
functions: retweet: handler: handler.retweet events: - schedule: rate(2 hours)
Это позвонит методу ретвит
из handler.py
каждые 2 часа.
Тогда мы можем заменить handler.py
Файл со следующим контентом:
import json, config from twython import Twython, TwythonError def retweet(event, context): twitter = Twython(config.APP_KEY, config.APP_SECRET, config.OAUTH_TOKEN, config.OAUTH_TOKEN_SECRET) search_results = twitter.search(q='serverless', result_type='mixed', lang='en') message = "" for tweet in search_results['statuses']: try: twitter.retweet(id=tweet['id']) message = f"Retweeted \"{tweet['text']}\" by {tweet['user']['name']}" twitter.create_friendship(id=tweet['user']['id']) break except TwythonError: pass body = { "message": message, "input": event } response = { "statusCode": 200, "body": json.dumps(body) } return response
Код довольно эксплуатационный. По сути, мы ищем английские твиты, упомянутые Серверный
, ретвитят их и следуйте автору твита.
возвратный ответ
только для регистрации и тестирования.
Как видите, ключи и токены Twitter читаются с использованием конфигурация
Анкет Все, что вам нужно сделать, это создать config.py
файл в том же каталоге и заполните его информацией, которую вы получили на странице приложения Twitter:
APP_KEY="xxxyyyzz" APP_SECRET="xxxyyyzz" OAUTH_TOKEN="xxxyyyzz-xxxyyyzz" OAUTH_TOKEN_SECRET="xxxyyyzz"
На данный момент мы собираемся развернуть функцию с:
$ serverless deploy -v
Без сервера Framework теперь позаботится обо всем, что необходимо для развертывания вашей функции Lambda. Когда процесс будет закончен, вы сможете увидеть его в консоли управления Lambda на AWS. Если вы заметили, будет настроено событие CloudWatch, настроенное для использования функции каждые 2 часа.
Если вы не хотите ждать 2 часа, вы можете вызвать функцию напрямую с помощью:
$ serverless invoke -f retweet
Если вы хотите удалить функцию из своей учетной записи AWS, вы можете просто использовать:
$ serverless remove
Вот и все. Теперь у вас есть свой собственный бот в Твиттере, который может ретвитить и следить за пользователями. Вы можете научиться добавлять гораздо больше функциональных возможностей, читая документацию Twython.
Полный код, используемый в этой статье, доступен на GitHub:
Lorenzotenti/Serverlessbot
Это ретвинирование бота в Твиттере с регулярными промежутками наиболее релевантных твитов о неверных вычислениях.
Найдите это Здесь Анкет
Учебное пособие о том, как построить этот бот, можно найти здесь.
Ему нужен файл config.py с ключами API Twitter, чтобы работать:
APP_KEY="YOUR_APP_KEY" APP_SECRET="YOUR_APP_SECRET" OAUTH_TOKEN="YOUR_OAUTH_TOKEN" OAUTH_TOKEN_SECRET="YOUR_OAUTH_TOKEN_SECRET"
_serverlessbot_ Встроенный в этой статье можно найти Здесь Анкет
Надеюсь, вам понравился этот урок. Если нет, дайте мне знать, почему в комментариях.
Оригинал: “https://dev.to/lorenzotenti/how-to-build-a-serverless-twitter-bot-lph”