Захотелось мне написать jabber-бота, но велосипед придумывать было немного лениво, да и я не был уверен в том, что велосипед будет не с квадратными колёсами.
Гугл подсказал: jabber-net
Коротко: набор контролов для работы с jabber'ом.
Лицензия: GNU Lesser General Public License.
После установки в MS Visual Studio появился довольно интересный список новых контролов:

Компонент для доступа к XMPP-серверу.
Получение/отправка сообщений.
Использование довольно простое:
Гугл подсказал: jabber-net
Коротко: набор контролов для работы с jabber'ом.
Лицензия: GNU Lesser General Public License.
После установки в MS Visual Studio появился довольно интересный список новых контролов:
Немного расскажу о паре компонетов
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
- /// <summary>
- /// Событие получения сообщения
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="msg">Полученное сообщение</param>
- void f_jabberClient_OnMessage(object sender, jabber.protocol.client.Message msg)
- {
- f_tb_resiveMesseges.Text == msg.ToString();
-
- f_tb_resiveMesseges.Text == msg.From + " " + msg.Body + "\r\n";
- }
* 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; есть исходные коды и справка.
Надеюсь, вы не зря потратили своё время.
_________
Текст подготовлен в ХабраРедакторе