В Части 2 мы настроили нашу базовую структуру, и теперь мы готовы перейти к самой пикантной части, где сценарий оживает, так чего же мы ждем?

Реализация логики

Наша командная логика заключается в методе Execute(data), который вызывается SC, когда сообщение публикуется в чате. Есть кое-что, над чем стоит подумать, но я проведу вас через них.

Помните, как я сказал, что любая команда (или сообщение, если на то пошло) в чате вызовет наш Execute(data) метод?

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

Одним из таких методов является data.GetParam(int id). Мы будем использовать его, чтобы получить первую информацию в сообщении и проверить, соответствует ли оно ! Mulder. Если нет, мы ничего не делаем. Но хватит разговоров, давайте реализуем это:

Наше командование должно утверждать, является ли кто-то инопланетянином или нет, основываясь на вероятности. Давайте представим эту вероятность и дадим ей значение около 10%, так что каждый из десяти человек на самом деле инопланетянин. Ну блин.

Кроме того, принятие решения о том, является ли кто-то инопланетянином, - это отдельная микро-ответственность, которую мы можем делегировать вспомогательному методу is_alien(). Давайте добавим этот метод к методу Tick() и добавим к нему вероятность:

Теперь нам нужно усилить это и вернуть True, если кто-то пришелец, и False если нет.

В Python есть собственные методы случайного выбора, но они, похоже, плохо работают с SC. Мы собираемся использовать случайную функциональность, предоставляемую SC, а именно Parent.GetRandom(int min, int max ), чтобы вернуть значение от 0 до 100. Если мы получим значение, меньшее или равное нашей вероятности, мы вернем True, в противном случае мы возвращаем False (вы можете игнорировать родительскую ошибку):

В зависимости от результата мы отправим в чат одно из двух сообщений.

Чтобы сделать вещи более разборчивыми, давайте представим еще один служебный метод, который будет обрабатывать отправку сообщений за нас: send_message(message). Вы можете добавить следующее в метод is_alien():

Мы собираемся использовать имя пользователя, запустившего команду, в обоих возможных сообщениях. Поскольку мы должны получить это из параметра data, и мы не хотим нарушать принцип DRY (D on't R epeat Y), давайте введем переменную для хранения этого имени пользователя:

Теперь нам нужно отправить сообщения на основе ответа is_alien(). Добавление этой логики завершает нашу командную логику:

Пробовать это

Во-первых, перейдите в раздел Scripts SC, перезагрузите скрипты, как раньше, и убедитесь, что вы включили команду Mulder, установив флажок справа. Когда вы закончите, это должно выглядеть так:

Теперь перейдите в раздел Консоль SC (вверху слева), введите !mulder в чате и нажмите Enter.

Наступает магия! Малдер судит о твоей природе. Потребовалось несколько попыток, но ему наконец удалось выяснить, что я не с этой планеты:

Могу я поздравить вас с написанием вашего первого командного скрипта Twitch? Это мой основной процесс создания команд. Вы можете делать гораздо более сложные вещи, но это то, с чего вы начнете. Чтобы получить представление о более сложных командах, ознакомьтесь с потоком theSlychemist, где я создал несколько сложных сценариев команд.

Следующий шаг

Вы можете остановиться здесь, сбежать и создать набор команд, и вы можете это сделать. Однако, если вы хотите получить еще совет от случайного чувака в Интернете: прочитайте также две последние части, по крайней мере, часть 4 об отладке вашего кода. Это спасет жизнь. Готовьте мухобойки и переходим к Части 4!