Захотелось мне написать jabber-бота, но велосипед придумывать было немного лениво, да и я не был уверен в том, что велосипед будет не с квадратными колёсами.
Гугл подсказал: jabber-net

Коротко: набор контролов для работы с jabber'ом.
Лицензия: GNU Lesser General Public License.

После установки в MS Visual Studio появился довольно интересный список новых контролов:
скриншот из MSVS

Немного расскажу о паре компонетов


JabberClient


Компонент для доступа к XMPP-серверу.
Получение/отправка сообщений.
Использование довольно простое:

Листинг 1


//f_jabberClient — объект класса JabberClient<br>f_jabberClient.Server = "jabber.ru";<br>f_jabberClient.User = "userName";<br>f_jabberClient.Password = "password";<br>f_jabberClient.Port = 5222;<br><br>// Создать обработчик события получения сообщения<br>f_jabberClient.OnMessage +=new MessageHandler(f_jabberClient_OnMessage);<br><br><br>//Соединяемся<br>f_jabberClient.Connect();<br><br><br>* This source code was highlighted with Source Code Highlighter.

Листинг 2


  1.     /// <summary>
  2.     /// Событие получения сообщения
  3.     /// </summary>
  4.     /// <param name="sender"></param>
  5.     /// <param name="msg">Полученное сообщение</param>
  6.     void f_jabberClient_OnMessage(object sender, jabber.protocol.client.Message msg)
  7.     {
  8.       f_tb_resiveMesseges.Text == msg.ToString();
  9.  
  10.       f_tb_resiveMesseges.Text == msg.From + " " + msg.Body + "\r\n";
  11.     }
* This source code was highlighted with Source Code Highlighter.

Листинг 2. Строка восемь. Полученное сообщение:
<message from="myJID@jabber.ru/Digsby" to="bot@jabber.ru" type="chat"><br>  <body>Привет!</body><br>    <html xmlns="http://jabber.org/protocol/xhtml-im"><br>      <body xmlns="http://www.w3.org/1999/xhtml"><br>        <span style="color: #000000; font: 14pt Times New Roman;">Привет!</span><br>      </body><br>    </html><br>  <active xmlns="http://jabber.org/protocol/chatstates" /><br>  <x xmlns="jabber:x:event"><composing /></x><br></message><br><br>* This source code was highlighted with Source Code Highlighter.

Листинг 2. Строка 10. Полученное сообщение:
myJID@jabber.ru/Digsby Привет!<br><br>* This source code was highlighted with Source Code Highlighter.

ConferenceManager


Компонент управления конференциями.
Присоединиться к конференции можно несколькими способами:

Листинг 3


   /// <summary><br>   /// Объект jabber-конференции<br>   /// </summary><br>   private Room c_f_room;<br><br>    <br>    //И привязка конференции к объекту room<br>    c_f_room = f_jabber_conferenceManager.GetRoom(new jabber.JID("conferenceName@conference.jabber.ru/name"));<br> <br>    //Присоединиться к конференции<br>    rooms.Join();<br><br>* This source code was highlighted with Source Code Highlighter.

Используя объект c_f_room можно удобно взаимодействовать с конференцией, используя методы этого объекта:
Отправлять публичные/приватные сообщения, кикать пользователей, покидать/присоединяться к конференции, выдавать войсы.
Так же можно создать события, для конкретной комнаты (естественно, событий больше, но зачем все описывать?):
      //Новое сообщение в конференции<br>      rooms.OnRoomMessage += new MessageHandler(rooms_OnRoomMessage);<br><br>      //новое сообщение от админа<br>      rooms.OnAdminMessage += new MessageHandler(rooms_OnAdminMessage);<br><br>      //Новый пользователь вошел в конференцию<br>      rooms.OnParticipantJoin += new RoomParticipantEvent(rooms_OnParticipantJoin);<br><br>* This source code was highlighted with Source Code Highlighter.

Общее впечатление: есть шикарное место для маневров. Можно отправиться писать собственный jabber-клиент с блекджеком и всем необходимым.

Личное впечатление: набор довольно удобный, хотя я нахожусь только в процессе работы с ним.

Hint: есть бинарники под Mono, под MSVS; есть исходные коды и справка.

Надеюсь, вы не зря потратили своё время.

_________
Текст подготовлен в
ХабраРедакторе