TixChat-pyBot

Материал из Вики TiX
Перейти к: навигация, поиск

TiX-chat pyBot - семейство ботов, разработанное JRoot.Junior aka St.Niga Alex на скриптовом языке программирования Python версии 2.7.х в середине лета 2015 года со скуки и интереса к API чата.

Текущая версия ядра бота: 0.3.2

В разработке: 0.4.0 RC2 (Remake used Python 3.5)

работает на прямую с сокет-сервером чата обмениваясь JSON объектами.

Так же бот обзавелся своим пабликом в вк

Ботостроение в чате[править]

Как и в любом другом чате, тут есть множество разнообразных ботов, как от минимальных - никак не показывающих себя другим, так и те с которыми можно "поговорить". Первым действующим ботом считается "Индига" от Вафлана, была реализована на JavaScript с парсингом в страницу чата и работала только в браузере.

Вдохновившись разработкой Вафлана и был создан Грут.

Так же на основе бота Вафлана написан другой бот, Юми. Создал его, вернее ее - Vladimir Davydov.
Бот находится в комнате "Аниме комната".

Действующие представители семейства pyBot[править]

Groot [bot][править]

«

А ты уверен, что ты живой и самостоятельный? Где грань между разумом и алгоритмом?

»
— Groot

собственно сам бот в чате (кликабельно)
Первый, самый старый и наиболее стабильный и "образованный" бот версии 0.3.1

Работает на секретных серверах ИASA.

Комнаты в которых находится бот[править]

  1. комната Задротская - основная комната бота, где он отвечает абсолютно всем без исключений.
  2. комната This is Хорошо - собственно основная комната чата. Тут бот отвечает только некоторым доверенным людям (таких около 30. их число постоянно меняется).
  3. и конечно же он отвечает в личных сообщениях всем без исключений (в 0.4.х реализована возможность добавления себя в игнор-лист)

Функции бота[править]

  • Ответ в комнатах и личных сообщениях
  • Перемещение по комнате
  • Возможность обучения фразам, например:
«

- %username%: Грут
- Groot: Я есть Грут

»
— Groot
  • Команды:
    /about - о боте.
    /ball - задать вопрос шару №8.
    /rules - правила комнаты (Задротской).
    /film, /book, /game, /comics - узнать совет, какой фильм, книгу, игру или комикс почитать или посмотреть.
    /cookie - сколько ждать к следующей печеньке?.
    /kinopoisk - поиск на Кинопоиске.
    /updates - просмотр списка обновлений.
    /goto, /freeze, /speed - Разрешить боту перемещаться.
    /google - поискать в гугле.
    /get - получить информацию об пользователе.
    /find - получить информацию об пользователе.
    /boobs & /butts - 18+ контент [PM Only].
    и много других скрытых и системных команд..


GLaDOS[править]

«

Опять меня препарировать!? Да сколько ж можно!? Бот тоже личность!

»
— GLaDOS

Тестовая версия pyBot-а, получает обновления в первую очередь и запускается, в основном с локального ПК разработчика. Имеет свойство периодически отключатся из-за тестирования нового функционала.

Комнаты в которых находится бот[править]

  1. комната This is Хорошо - обычно не отвечает вообще, либо отвечает всем по сколько переключается основная комната бота.
  2. секретная, подпольная лаборатория APERTURE SCIENCE [gDevRoom] - основная комната бота. Туда допускаются только доверенные и специально обученный тестеры.
«

В этой лаборатории разрабатывается искусственный интеллект для использования в исследованиях природы порталов

»
— тема комнаты

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

Функции бота[править]

Бот имеет немного больше функций чем у Грута

@Moderator [bot][править]

Тестовый, пока не доступен для людей бот, который будет следить за порядком. Базируется на версии 0.3.2 и вынесен в отдельную ветку. Разрабатывается паралелльно с основной веткой pyBot. В данный момент разработка данного проекта заморожена. Точный функционал и принципы действия пока точно не известны и могут изменятся.

Немного об принципах действия[править]

Работает на чистой магии и реактивном топливе, с использованием велосипедно-костыльной конструкции. Нет, на самом деле все происходит по асинхронному WSS протоколу. Но да, с костылями и велосипедами. Чисто теоретически он не должен был запускаться, но неведомой силой он начал работать и довольно таки не плохо. авторизация происходит по токену, получаемому от сервера. далее активируются:

  • 1 поток для поддержки соединения (особенности API)
  • 2 потока на обработку входящих/исходящих запросов (в дальнейшем будут объединены в один)
  • 1 поток отвечающий за перемещение бота по комнате.
  • 2 служебных потока отвечающих за поддержку работоспособности бота (wathdog) и обработчик терминала.
  • и в MainFrame осуществляется само подключение к серверу, обработка команд из чата (асинхронно). А так же отвечает за сохранение и обработку данных.

(да-да, архитектура ни к черту..)

Добавление функционала[править]

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

В версии 0.4 реализована возможность написания не зависимых модулей (плагинов)

Реализовывается на Python 3.x

Пример[править]

from bot.bot_plugin import Plugin
from jcore.plugins import PlPriority


class TestPlugin(Plugin):
    Name = 'Test'
    Version = '1.0'
    Description = 'Base testing plugin.'
    Priority = PlPriority.BACKGROUND

    def on_load(self):
        # Init commands
        self.add_tel_command(['echo'], self.cmd_echo, 'Echo')
        self.add_chat_command(['echo'], self.c_cmd_echo, 'Echo')

        self.Enabled = True

    def cmd_echo(self, client, data):
        """
    Simply telnet 'echo' command
        """
        line = data.split(' ')
        if len(line):
            self.jcore.log.info('Client say: ' + ' '.join(line[1:]))
            return '>>> ' + ' '.join(line[1:])

    def c_cmd_echo(self, cparam):
        """
    Simply chat 'echo' command
        """
        line = cparam.text.split(' ')
        if len(line) > 1:
            text = line[1:]
        else:
            text = ''
        text = ' '.join(text)
        self.botsocket.send_message(cparam, text, True, highlight=cparam.replies)

Описание API[править]

Coming soon..