- PVSM.RU - https://www.pvsm.ru -

Простой бот для Skype на C++ Qt (ActiveX)

Всем привет! Недавно от скуки написал Skype бота. Решил поделится, может быть кому нибудь пригодятся исходники, да и сам бот.

image

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

В программе реализованы некоторые возможности:

  • Соединение с COM сервером скайпа
  • Отсоединение от COM сервера скайпа
  • Запуск скайпа
  • Закрытия скайпа
  • Обновления словаря не пере запуская программу «Словарь->Перечитать»
  • Выбор чатов в которых будет идти диалог «Чаты->Список чатов»
  • Сворачивается в system tray

Для работы программы нужен файл config.xml который должен находится в одном каталоге с exe программой.

Настройка Skype Бота

Для сохранения настроек необходим файл config.xml, который должен находится в одном каталоге с SkypeBot.exe. В этом файле хранится как словарь для бота, так и его настройки:

Структура config.xml такова:

<?xml version="1.0" encoding="UTF-8"?>
<main>
     <t reg="(привет|здраствуй)">
           <reply>Привет</reply>
           <reply>Здорова</reply>
           <reply>Хай</reply>
     </t>
     <t reg="(Как дела|Как ты)">
           <reply>Нормально, у тебя как?</reply>
           <reply>Хорошо</reply>
     </t>
     <namechat>#cj1900/$e9e3e97f93c86546</namechat>
</main>

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

Ключей как и ответов может быть сколько угодно.

Далее идет тег namechat. Там хранится имя чата, его редактирует сама программа, в нем находится название чатов, в которых вы хотите вести диалог с ботом.

Вот окно выбора чатов:

image

К сожалению, по какой то причине Skype не всегда показывает все чаты через ActiveX, я так и не смог решить эту проблему.

Ссылки на файлы

Ссылка на исходники на disk.yandex.ru [1]
Ссылка на исходники на github.com [2]
Ссылка на программу SkypeBot [3]
Единственная подробная документация для SkypeApi, написанная для visual basic [4]

Автор: teimur

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/qt-2/79846

Ссылки в тексте:

[1] Ссылка на исходники на disk.yandex.ru: https://yadi.sk/d/tLOsHzEXe34RT

[2] Ссылка на исходники на github.com: https://github.com/teimur06/SkypeBot

[3] Ссылка на программу SkypeBot: https://yadi.sk/d/klzxSSjae2zFQ

[4] Единственная подробная документация для SkypeApi, написанная для visual basic: http://users.skynet.be/fa258239/bestanden/skype4com/skype4com.pdf

[5] Источник: http://habrahabr.ru/post/248101/