Что будем делать сейчас:
- Разбираемся, что надо поставить
- Настраиваем девелоперский твиттер-экаунт
- Пишем бот
- Запускаем
Что нам понадобится, чтобы написать бот на 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.
Если не все детали понятны, то в коде можно покопаться по ссылке.