Пишем простой Twitter-бот на Python: Tweepy

Пробуем написать простой твиттер-бот на Python, при помощи библиотеки Tweepy, Twitter API и немножко магии

Что будем делать сейчас:

  1. Разбираемся, что надо поставить
  2. Настраиваем девелоперский твиттер-экаунт
  3. Пишем бот
  4. Запускаем

Что нам понадобится, чтобы написать бот на Python ?

Во первых, нужна библиотека Tweepy – качаем по ссылке.

И конечно будет нужен девелоперский экаунт Twitter, заходим на ссылку (объяснения – в тексте).

Настройка девелоперского экаунта

Чтобы написать твиттер-бот и он работал, сначала надо подать в Twitter заявку на создание особого девелоперского экаунта, с доступом к продвинутым функциям. Как это делается, описано по ссылке.
Необходимо объяснить, как твое приложение будет взаимодействовать с API твиттера (это называется use-cases: “мой бот будет запрашивать такие-то функции в Twitter”). Прием и рассмотрение заявки может занять от одного часа до нескольких суток, поэтому нужно терпение.
После утверждения заявки получаешь письмо, в котором описываются тонкости доступа на портал разработчиков. Входишь туда и выполняешь все этапы, то есть создаешь девелоперский экаунт.
Надо будет еще проверить, выданы ли разрешения “Read + Write + Read” плюс “post direct messages”:

Если экаунт успешно создан, а нужные разрешения выданы, нажимаем иконку Key 🗝  возле своего приложения, и появится вот такое:

Сгенерируем и запишем API key/secret и access token/secret. Надо записать его в текстовый документ, потому что потом к нему не будет доступа, после того как он сгенерирован.

Далее переходим к написанию – непосредственно нашего приложения.

Написание приложения на Питоне

Мы сделаем простое приложение, которое выдает приветствие – в общем традиционный хелловорлд, и этого достаточно.

Структура файла, когда закончим сей туториал, будет примерно такой:

├───twitterbot
  └───.env             # File that contains our keys
  └───main.py          # Our main application
  └───requirements.txt # The packages we will be using

Итак начнем. Создаем пустую папку командой:

$ sudo mkdir twitterbot

Дальше переходим в папку, командой cd :

$ cd twitterbot

Создаем два файла, называем их main.py и requirements.txt.

Во втором файле requirements.txt вставим строчку:

tweepy==3.10.0
python-dotenv==0.17.1

Дальше устанавливаем нужные пакеты, командой:

$ pip install -r requirements.txt

Tweepy – библиотека для работы с Twitter API, а python-dotenv– библиотека, позволяющая “включить” переменные среды (environment variables) в нашем боте.

Далее, переходим к ключам и токенам, разбираемся где их задействовать.
Создаем файл с расширением .env, и вставляем ключи (сгенерированные ранее):

consumer_key=XXX        # Found in the API/Secret section
consumer_secret=XXX     # Found in the API/Secret section
access_token=XXX        # Found in the Access Token/Secret section
access_token_secret=XXX # Found in the Access Token/Secret section

Рекомендуется применять переменные среды, имея дело с чувствительными данными (логины-пароли). НИКОГДА не вставляй такие данные в свои программы в “голом”, неизмененном виде.

Идем дальше. Начинаем применять переменные среды в своей программе. В главном файле main.py вставляем следующие строчки:

import os

import tweepy
from dotenv import load_dotenv

# Loads the .env file for the credentials
load_dotenv()

# Credentials set in the .env file
consumer_key = os.environ.get('consumer_key')
consumer_secret = os.environ.get('consumer_secret')
access_token = os.environ.get('access_token')
access_token_secret = os.environ.get('access_token_secret')

Сейчас мы имплементируем библиотеку Tweepy, которая принимает клиентские данные, и впускает в Twitter:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

# Create API object
api = tweepy.API(auth)

# Checks if the credentials entered are correct
def authenticate():
    if not api.verify_credentials():
        print('Authentication: FAILED')
        return False
    else:
        print('Authentication: OK')
        return True

Дальше имплементируем такую функцию:

def tweet():
    # If authenticate returns true, execute the following
    if authenticate():
        # Calls the API to tweet the following
        api.update_status('Hello World!')
        print('Tweet has been sent!')
    # If authenticate returns false, print the following
    else:
        print('Tweet has not been sent.')

if __name__ == "__main__":
    tweet()

Запускаем наше приложение

Теперь весь код написан, значит нужно его проверить в деле, командой python main.py, должно появиться следующее:

Authentication: OK
Tweet has been sent!

И в экаунте появится такой твит:

Поздравляем с созданием своего первого твиттер-бота на Tweepy.

Если не все детали понятны, то в коде можно покопаться по ссылке.

DeV

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll to Top