Рубрики
Без рубрики

Как построить без серверного бота в Твиттере

Учебное пособие о том, как построить бот Twitter с использованием Serverless и AWS Lambda. Tagged с без сервера, Lambda, Python, AWS.

В этом посте я собираюсь показать вам, как построить бота в Твиттере, используя Без сервера 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”