Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 84

Простой Jabber бот

14.11.2018, 09:20. Показов 2477. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
static void Main(string[] args)
        {
            XmppClientConnection xmpp = new XmppClientConnection("jabber.temnet.ru", 5222); // подключение к серверу
 
            xmpp.Username = "test1"; // подключение к имени пользователя
            xmpp.Password = "V1234567!"; // пароль от пользователя
            xmpp.Resource = "";
            xmpp.Priority = 0; // 
            xmpp.UseStartTLS = true; //
            xmpp.Open(); // открытие подключение
            xmpp.OnLogin += new ObjectHandler(OnLoginEvent); // что бот делает при логине
                                                             // Самое важное! Как именно бот реагирует на сообщение пользователя
                                                             // Здесь заключена сама соль работы бота
            xmpp.OnMessage += new MessageHandler(xmpp_OnMessage);
            xmpp.OnError += new ErrorHandler(xmpp_OnError); // что бот делает при ошибке
 
 
 
            void OnLoginEvent(object sender)
            {
                Console.WriteLine("Присоединён."); // в самой консоли выдает надпись что он подключился к указанным данным
                xmpp.SendMyPresence(); // 
                xmpp.Send(new Message("@jabber.temnet.ru", MessageType.chat, "Я онлайн!")); // обращение к пользователю
            }
 
            void xmpp_OnError(object sender, Exception ex)
            {
                Console.WriteLine(ex.Message); // выдает ошибку если находит ее
            }
 
            void xmpp_OnMessage(object sender, Message msg)
            {
                string receivedMessage = msg.From + ": " + msg.Body; // ----|
                                                                         // |  Здесь мы в консоль cmd выводим JID отправителя и его сообщение.  
                Console.WriteLine(receivedMessage); // ---------------------|
                Jid Jid = new Jid(msg.From.Bare); // отвечает за идентификатор Jabber’а написавшего боту пользователя<Свойство msg.Form.Bare — это «обратный» адрес, куда надо отвечать боту.>
                string messageBody = BuildResponseMessage(msg.Body); // которого будет возвращаться ответ в зависимости от запроса пользователя.
                if (string.IsNullOrWhiteSpace(messageBody))
                    return;
                Message xmppMessage = new Message(Jid, MessageType.chat, messageBody); // ---|
                //                                                                           | мы отправляем сообщение пользователю в ответ на его запрос.
                xmpp.Send(xmppMessage); // ------------------------------------------------- |
            }
 
            string BuildResponseMessage(string body)
            {
                if (string.IsNullOrWhiteSpace(body))
                    return String.Empty;
                body = body.Trim().ToLower();
                switch (body)
                {
                    case "твое состояние?" : return "Я онлайн!";
                    case "date": return DateTime.Now.ToString();
                    default:
                        return "Неизвестная команда";
                }
            }
            Console.ReadKey();
        }
у меня есть код для скажем так простого jabber бота который отвечает на определенные команды
но возник такой вопрос
если вдруг у меня есть пользователь который например вводит например("сегодня вполне хорошая погода или нет??" и бот ответил "да вполне что бы пойти гулять")
и я хочу что бы перед тем как ответить "да вполне что бы пойти гулять" он проверил в каком нить словаре есть ли там слова связанные с погодой если да то он отвечает: "да вполне что бы пойти гулять" если же нет то пишет: "я не понимаю вас"

Подскажите как это реализовать? (мне приходит в голову только парсинг сообщений которые получает бот)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2018, 09:20
Ответы с готовыми решениями:

Простой бот в Telegram
Приветы! Понимаю, что тема жутко, жутко заезжанная, тем не менее, раз у меня возник вопрос, значит, все еще актуально. В общем,...

Простой бот для MMORPG
Всем доброго времени суток. Я только недавно начал изучения программирования и по этому прошу вашей помощи) Нуждаюсь в простом боте для...

Пишем простой бот для браузера
Привет! Подскажите, каким образом лучше подойти к решению задачи. Мне нужно написать бота, который будет заходить на адрес в браузере...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2018, 09:20
Помогаю со студенческими работами здесь

Простой бот для социальной сети Instagram
Ребят. Как сделать простого бота? Список задач, которые должен выполнять бот: -возможность входа/выхода в свой аккаунт (для бота) ...

Jabber - есть ли у кого исходники jabber-клиента?
Может быть есть у кого исходники jabber клиента? Был бы очень благодарен, время самому писать к сожалению нет...

Простой telegram бот на php
Здравствуйте, решил написать простейшего бота telegram или вконтакте. Остановился пока на telegram. Цель пока разработать бота...

Пишем простой бот для браузера
Привет! Подскажите, каким образом лучше подойти к решению задачи. Мне нужно написать бота, который будет заходить на адрес в браузере...

Простой бот, чтобы собирать коины (монеты)
Пишу бота на CSGOloto.com Там есть 2 кнопки, которые дают ежедневный бонус (50+75=175 монет) и одна, которая даёт ежечасный бонус (10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru