Это вторая из двух частей серии о ботах Twitter. В этом посте обсуждается, как их создавать. В предыдущем посте рассказывается о том, что это такое, и некоторые примеры.

Я пишу всех своих ботов для Twitter на Python, поэтому в этой статье я остановлюсь на этом. При этом вы можете написать бота для Твиттера практически на любом языке, который вам нравится, и недостатка в обертках Twitter API нет; общая стратегия остается прежней.

В этом посте используется очень простой бот-фреймворк, который я собрал, и я рекомендую вам использовать его для своих собственных ботов. Вы также сможете создать свой собственный с нуля, следуя моим инструкциям здесь.

Зарегистрируйте учетную запись Twitter

Возможно, самая сложная часть создания бота для Твиттера - придумать хорошее имя пользователя, которое еще не занято. Я ничем не могу с этим помочь, но как только вы что-то придумаете, зарегистрируйте аккаунт. Вы можете поиграть с аватаром, описанием, фотографией на обложке и всем этим сейчас или подождать позже.

Создайте приложение Twitter

Для автоматической публикации сообщений в учетной записи Twitter вам необходимо получить ключи доступа к вашей учетной записи. Для этого вам необходимо зарегистрировать приложение Twitter. Перейдите на apps.twitter.com и нажмите Создать новое приложение.

Обратите внимание, что для создания приложения у вас должен быть уникальный номер телефона, связанный с учетной записью Twitter; это чертовски больно. Для тех, кто вроде меня, у кого ботов Twitter больше, чем у нас телефонных номеров, есть только одно реальное решение, и оно не очень хорошее:

  1. Выберите учетную запись для использования в качестве учетной записи разработчика и свяжите с ней свой номер телефона.
  2. Создайте новую учетную запись для своего бота.
  3. Зарегистрируйте приложение Twitter для бота в учетной записи разработчика.
  4. Перейдите в Поддержка Twitter API и выберите Мне нужно перенести ключ API в другую учетную запись.
  5. Заполните форму (убедитесь, что вы все еще вошли в учетную запись разработчика).
  6. Подождите произвольное количество времени (обычно это у меня около недели, но иногда намного дольше), чтобы кто-нибудь из службы поддержки Twitter вручную передал ключ.
  7. Ворчите о том, как это сделать лучше.

После создания учетной записи вам будет предложено заполнить несколько полей:

  • Имя: как вы хотите называть своего бота.
  • Описание: краткое описание того, чем занимается бот.
  • Веб-сайт: Обычно я просто размещаю свой собственный веб-сайт или свой Github, или ссылку на репозиторий Github для данного бота.
  • URL обратного вызова: вы можете пропустить это.

Установите флажок, чтобы согласиться с соглашением разработчика, и нажмите «Создать»!

Перейдите на вкладку «Разрешения» и установите уровень доступа, необходимый вашему приложению. Вероятно, это будет «Читать и писать».

Перейдите на вкладку «Ключи и токены доступа» приложения и нажмите кнопку «Создать мой токен доступа» под заголовком «Ваш токен доступа».

Напишите боту!

Я создал очень простой бот-фреймворк для работы с этим руководством. Он предоставит вам общую структуру, а также некоторые простые функции ведения журнала, которые я считаю очень полезными для целей отладки.

В этом руководстве предполагается, что вы знакомы с Python. Также предполагается, что ваш проект имеет такую ​​структуру:

twitter-bot/
|-- bot.py
|-- secrets.py

bot.py будет содержать весь код для бота. secretts.py будет хранить ваши ключи доступа и должен быть добавлен в ваш .gitignore, если вы собираетесь публиковать код. Любой, у кого есть доступ к вашим ключам, может читать или писать из этой учетной записи Twitter, поэтому вы действительно не хотите публиковать их.

Выберите свою библиотеку

Если вам нравится усложнять себе задачу или если вы используете язык без библиотеки Twitter, то я полагаю, вы можете напрямую общаться с Twitter API. В противном случае я настоятельно рекомендую выбрать одну из многих библиотек Twitter. Мне больше всего нравится tweepy, и это то, что используется в этом руководстве.

Установите tweepy, запустив pip install tweepy. Теперь вы можете просто импортировать tweepy в начало файла bot.py.

Аутентифицировать

Чтобы читать или писать из учетной записи Twitter, вам необходимо пройти аутентификацию.

Вернитесь на вкладку «Ключи и токены доступа» вашего приложения Twitter. В secrets.py добавьте:

C_KEY = ""
C_SECRET = ""
A_TOKEN = ""
A_TOKEN_SECRET = ""

Добавьте следующее со страницы «Ключи и токены доступа» в кавычках:

  • C_KEY: Consumer Key (API-ключ)
  • C_SECRET: секрет потребителя (секрет API)
  • A_TOKEN: токен доступа
  • A_TOKEN_SECRET: секрет токена доступа

Опять же, если вы собираетесь публиковать этот код, важно, чтобы вы не публиковали файл secrets.py.

В bot.py добавьте следующее:

from secrets import *
auth = tweepy.OAuthHandler(C_KEY, C_SECRET)
auth.set_access_token(A_TOKEN, A_TOKEN_SECRET)
api = tweepy.API(auth)

Создавайте твиты

Это зависит от вас. Часть I этой серии объясняет некоторые типы ботов и дает некоторые примеры, которые могут послужить источником вдохновения. Вам нужно будет создать контент самостоятельно, но я могу дать вам несколько ресурсов, которые, как я считаю, очень полезны:

Публиковать твиты

Как только вы соберете свой твит, опубликуйте его!

api.update_status(tweet)

Это только отдельный твит. Если вы хотите ответить на другой твит, написать кому-то прямое сообщение или заняться другими забавными вещами, ознакомьтесь с тонкой документацией.

Промыть, повторить

Есть масса способов постоянно публиковать твиты. Вы можете написать это в самой программе и запускать в фоновом режиме, но мой любимый подход - использовать cron jobs на моем VPS. Вы, вероятно, также можете использовать их на своем персональном компьютере, но вам нужно будет убедиться, что машина включена и не спит, когда вы хотите, чтобы она выполнялась. Задания Cron будут работать в Linux и OSX, но если вы используете компьютер с Windows, вам, вероятно, придется изучить альтернативные подходы.

Вы можете отредактировать свою таблицу cron, запустив crontab -e. Есть отличные ресурсы, которые помогут вам запланировать задачу, такие как это руководство и генератор crontab, но вот несколько примеров строк, которые я сейчас использую для своих ботов:

Твитнуть каждый час, в час:

0 * * * * python /home/molly/twitter-bot/bot.py

Твитнуть каждые три часа:

0 */3 * * * python /home/molly/twitter-bot/bot.py

Твитните каждые пятнадцать минут:

*/15 * * * * python /home/molly/twitter-bot/bot.py

Твитнуть в 12, 6, 12 и 18 часов:

* 0,6,12,18 * * * python /home/molly/twitter-bot/bot.py

Записка

Я очень, очень рекомендую прочитать статью Дариуса Каземи Основы этикета Twitter-ботов. Он перечисляет четыре предложения, как сделать бота, который не будет засранцем.

Я считаю, что некоторые из этих правил более гибкие, чем другие. Например, @yourevalued делает @mention людей, но я стараюсь уменьшить его глупость, гарантируя, что он никогда не будет твитнуть одному и тому же человеку дважды. Тем не менее, я рискую, что этот бот будет забанен Twitter за @ упоминание слишком большого числа лиц, не подписанных на подписку.

Первоначально опубликовано на сайте blog.mollywhite.net 18 марта 2015 г.