
Здравствуйте, уважаемые пользователи Хабрахабра.
В этой статье я хочу рассказать вам об очень простом и полезном боте для Twitter, который поможет контролировать состояние Windows-сервера (Занятое место на дисках, процент загрузки CPU, RAM).
Предисловие
Я работаю системным администратором на одном консервном заводе. Так как фирма не профильная, приходится быть администратором и программистом в одном лице.
Причина создания этого бота — быстро заканчивающееся место на жестком диске сервера из-за ежедневных резервных копий баз 1С.
Я долго размышлял о возможных вариантах подобного контроля и пришёл к выводу, что Твиттер самое удобное решение для этого. Итак, от слова к делу.
Подготовка
Так как писать бота будем на C#, нам понадобится:
- Microsoft Visual Studio 2008-2010 любая редакция (или SharpDevelop 3.2 — 4.x)
- Библиотека Twitterizer для работы с Twitter в .NET Framework
- Немного терпения
Разработка
Скачиваем с сайта разработчика библиотеку и распаковываем её содержимое в каталог с нашим проектом. Нам нужны только два файла — Twitterizer2.dll и Newtonsoft.Json.dll. Добавим библиотеку Twitterizer в наш проект. Правая кнопка мыши по проекту -> Add Reference Выбираем вкладку «Browse» и указываем путь к Twitterizer2.dll.

Добавляем в код главной формы
using Twitterizer;
Теперь можно перейти непосредственно к работе с Твиттером.
Зарегистрируем наше приложение. Об этом хорошо написал thevar1able в своей статье о Python боте.
Нам будут нужны 4 ключа: Consumer key, Consumer secret, Access token и Access token secret.
Все действия сводятся к отправке нужной нам информации в виде твита.
private bool SendTwit(string Twit) { OAuthTokens tokens = new OAuthTokens(); // Создаём объект класса tokens.ConsumerKey = "xAWDWV5YE1F5gz3pHw"; //Ввводим Consumer Key //Вводим Consumer Secret tokens.ConsumerSecret = "iSoQ5lYl24BolEdjTte0wnPN4KX9WuGGzJgJivg"; //Вводим AccessToken tokens.AccessToken = "370065603-6mRJ8vNHb6tFCKKQhQNxkVR0uy7kK7dFbt2UN"; //Вводим Access Token Secret tokens.AccessTokenSecret = "zYT39d8K8SQEm7OxUt1BUCpIZi0VixKElb9go0w"; //Отправляем сообщение в твиттер TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(tokens, Twit ); if (tweetResponse.Result == RequestResult.Success) //Проверка отправки { return true; //Сообщение отправилось } else { return false; //Сообщение не отправилось } }
Информацию о процессоре и оперативной памяти можно получить с помощью класса PerformanceCounter, который находится в пространстве имён System.Diagnostics.
private PerformanceCounter cpuCounter; //Создаём объекты для чтения данных о процессоре private PerformanceCounter ramCounter; //и оперативной памяти cpuCounter = new PerformanceCounter(); //Инициализируем // Добавляем счетчик производительности ОЗУ ramCounter = new PerformanceCounter("Memory","Available MBytes"); cpuCounter.CategoryName = "Processor"; //Добавляем cpuCounter.CounterName = "% Processor Time"; //счетчик производительности cpuCounter.InstanceName = "_Total"; //процессора float RAMFree ramCounter.NextValue(); //Получаем количество ОЗУ в мегабайтах float CPULoad ramCounter.NextValue(); //Получаем процент загрузки процессора
В результате у нас получилось нечто подобное:

Оригинал
В окне настроек можно выбрать интервал обновления статуса (1, 10, 15, 30, 60 минут). В Твиттер будут отправляться данные, отмеченные галочками, в список ниже выводится дата и время отправки твита, статус отправки и количество символов в сообщении.
Заключение
В дальнейшем планируется реализовать следующие возможности:
- Отправка более подробной информации через Direct Message
- Управление ботом с помощью Direct Message и Mentinos
- Сохранение настроек
- Ведение логов
Вот возможности, которые будут реализованы в следующей версии бота.
Спасибо всем за внимание, надеюсь всем было интересно. Желаю творческих успехов!
Ссылки
Исходники программы
Сайт разработчика Twitterizer
Документация по Twitterizer на сайте разработчика
