Pull to refresh

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

Reading time 2 min
Views 34K
Всем привет! Недавно от скуки написал 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
Ссылка на исходники на github.com
Ссылка на программу SkypeBot
Единственная подробная документация для SkypeApi, написанная для visual basic
Tags:
Hubs:
+9
Comments 18
Comments Comments 18

Articles