В Части 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!