genshin-twitch-wish не связан с HoYoverse. Genshin Impact, контент и материалы игры являются товарными знаками и принадлежат HoYoverse.
В симуляторе используются контент и материалы из Honey Impact - Genshin Impact DB and Tools.
Симулятор написан на Python и использует PyGame для вывода анимации, TwitchIO для взаимодействия с чатом и наградами на трансляции.
Возможности:
- База персонажей и предметов актуальна для патча
4.3, обновляется с выходом обновлений в игре - Поддерживаются как одиночные молитвы, так и множественные (от 2 до бесконечности)
- Поддерживается работа с чатом на трансляции и использование баллов канала зрителями
- Поддерживается загрузка пользовательских фонов (даже анимированных), звуков и шрифтов
- Настройка времени и показа стадий анимации (показ ника зрителя, анимация падения, анимация результата молитвы)
- Запись истории молитв зрителей в
CSVформате - Рендер истории молитв зрителей в
HTMLформате - Полная настройка всех шансов и мягкого гаранта при молитвах
- Полная настройка сообщений чат-бота и баллов канала
- Полная настройка баннеров и выпадающих предметов
- Чат-бот умеет сам делать молитвы, а также подсказывать зрителям, когда они снова могут пользоваться командами (по таймауту)
- Сервисные команды чат-бота для отключения звука или остановки симулятора (паузы) во время важных моментов на трансляции
- Поддержка текста и предметов на разных языках
- Здесь можно выбить скины
Переходим по ссылке на последний релиз, скачиваем архив genshin-twitch-wish_win64.zip, распаковываем в любую удобную папку. Симулятор состоит из:
- banners - папка, баннеры для симулятора
- sound - папка, звуки для анимаций
- logs - папка, файлы журналов работы симулятора
- images - папка, спрайты для симулятора
- fonts - папка, шрифты для текста
- background - папка, спрайты фонов для анимаций
- text - папка, все текстовые файлы
- ui - папка, файлы интерфейсов
- TwitchGenshinWishSim.exe - сам симулятор
- icon.png - иконка для окна симулятора
- config.json - файл настроек
- config_def.json - шаблон файла настроек
- messages.json - файл с сообщениями для симулятора и чат-бота
- auth.json - появится после первого запуска, файл с Twitch токенами
- database.sqlite - появится после первого запуска, база данных с молитвами зрителей
По умолчанию включен тестовый режим. Можно сразу запустить симулятор TwitchGenshinWishSim.exe и посмотреть на результат 100 тестовых молитв. Тестовый режим отключается в файле конфигурации, параметр test_mode
В симуляторе используется 2 вида бота: чат-бот - читает сообщения из чата (секция chat_bot), бот на баллы канала - ждет использование наград зрителями (секция event_bot). Так как эти боты работают раздельно друг от друга, возможны 2 варианта настройки:
- Использовать разные учетные записи Twitch. Первая будет чат-ботом, вторая - аккаунт стримера, для баллов канала
- Использовать одну учетную запись и для чат-бота и для баллов канала
При первом запуске будет предложено настроить аккаунты. Настройка автоматическая и интерактивная, нужно лишь следовать инструкциям и отвечать y или n (y - да, n - нет). Когда файл auth.json будет создан симулятор больше не будет предлагать настроить аккаунты
Получение токенов вручную через собственное приложение
Этот и следующие разделы можно пропустить, если сработала интерактивная настройка
Заходим в свой основной аккаунт Twitch, переходим в панель разработчика, жмем кнопку Регистрация приложения
Заполняем по порядку:
- Название приложения (должно быть уникальным, можно добавить название канала)
- Ссылка, куда будет передаваться токен, указываем
https://twitchtokengenerator.com - Категория
Chat Bot
Проходим капчу и подтверждаем создание приложения.
Переходим обратно к списку всех приложений и выбираем то, которое только что создали, жмем Управление
Жмем на кнопку Новый секретный код, появится новое поле. Оставляем текущую вкладку с данными открытой.
Открываем в новой вкладке (вкладку с данными, если она есть, не закрываем) генератор Twitch токенов, жмем на Uhhhh what? Just take me to the site
Заполняем поля данными из предыдущей вкладки (если пропустили предыдущий пункт то не трогаем):
- CLIENT ID = Идентификатор клиента
- CLIENT SECRET = Секретный код клиента
Если для чат-бота и для баллов канала будет использоваться один и тот же аккаунт, то отмечаем пункты:
- chat:read - чтобы читать сообщения из чата
- chat:edit - чтобы писать в чат
- channel:read:redemptions - чтобы видеть использование балов канала
Если разные:
- Для чат-бота отмечаем:
- chat:read - чтобы читать сообщения из чата
- chat:edit - чтобы писать в чат
- Для бота баллов канала (аккаунт, с которого будет вестись трансляция):
- channel:read:redemptions - чтобы видеть использование балов канала

Generate Token! Обязательно проверяем, что вверху страницы указано название нашего приложения (если создавали) и имя нужного нам аккаунта. После чего нас перекинет на предыдущую страницу.

config.json:
- если используем один и тот же аккаунт для чат-бота и для баллов канала:
- вставляем токен в bot_token и channel_token
- если аккаунты для чат-бота и баллов канала разные:
- токен, полученный за аккаунт стримера (с которого будет вестись трансляция и у которого мы отметили пункт channel:read:redemptions) вставляем в channel_token
- выходим из своей учетной записи Twitch
- входим в учетную запись, которая будет использоваться как чат-бот
- повторяем шаги из Создаем токен (страницу с генератором токенов нужно будет обновить после перезахода в другой Twitch аккаунт)
- второй токен вставляем в bot_token (должны быть пункты chat:read и chat:edit)
- window_name - название окна для захвата в OBS
- banner - название баннера из папки
banners, который будет использовать симулятор - chat_bot - секция для настройки чат-бота
- enabled - включение или отключение секции (true или false)
- wish_command - команда, на которую бот должен реагировать
- wish_command_prefix - префикс для команды
- wish_global_timeout - общее ограничение для всех пользователей на команду бота (в секундах)
- wish_timeout - как часто каждый пользователь может использовать команды бота (в секундах)
- broadcaster - для автора канала
- mod - для модераторов
- vip - для зрителей с VIP
- turbo - для зрителей с Twitch Turbo
- subscriber - для подписчиков
- user - все остальные
- send_notify - отправлять ли уведомление в чат когда пользователь снова может использовать wish_command
- wish_count - количество молитв, которое будет делаться за одно использование команды
- self_wish - режим, при котором бот сам использует команду
- self_wish_every - как часто (если включено) бот будет использовать команду
- enable_colors - включить цветные ники
- event_bot - секция для настройки баллов канала
- enabled - включение или отключение секции (true или false)
- default_color - цвет для ников
- rewards - секция настройки наград за баллы канала
- event_name - название награды
- wish_count - сколько молитв делать при использовании
- animations - секция настройки анимаций
- chroma_color - цвет хромакея
- draw_states - какие стадии анимации будут показаны при молитве
- draw_usertext - вывод ника зрителя с текстом и user_background (если включен)
- draw_fall - вывод анимации падения звезды
- draw_wishes - вывод анимации результат молитвы
- start_delay - как долго будет показан ник пользователя сделавшего молитву (в секундах)
- end_delay - как долго будет показан результат молитвы (в секундах) если была сделана всего 1 молитва
- 3 - для 3★
- 4 - для 4★
- 5 - для 5★
- end_delay_multi - как долго будет показан результат молитвы (в секундах) если было сделано больше 1 молитвы
- 3 - для 3★
- 4 - для 4★
- 5 - для 5★
- user_background - секция настройки пользовательских фонов
- enabled - включение или отключение секции (true или false)
- path - название файла в папке background (только имя файла, не полный путь)
- type - тип фона,
staticдля JPG или PNG,gifдля GIF (видео файлы.mp4и другие тоже могут работать)
- font - секция настройки шрифтов и текста
- path - название файла в папке fonts (только имя файла, не полный путь)
- user_uid_size - размер текста для отображения ника пользователя в правом нижнем углу
- wish_name_size - размер текста для сплэш анимации (названия оружий и имена персонажей)
- fps - частота обновления анимаций (все анимации настроены на 30 кадров в секунду)
- sound - секция настройки звука (все файлы должны лежать в папке sound)
- enabled - включение или отключение секции (true или false)
- fall - для анимации падения
- 3 - во время сплэш анимации для 3★
- 4 - во время сплэш анимации для 4★
- 5 - во время сплэш анимации для 5★
- history_file - секция настройки записи истории молитв
- enabled - включение или отключение секции (true или false)
- path - имя файла (не полный путь, вместе с расширением), куда будет записываться история
- 3 - записывать ли выпадение 3★
- 4 - записывать ли выпадение 4★
- 5 - записывать ли выпадение 5★
- language - секция настройки языка симулятора, указывать имя файла (без расширения) из папки
text- text - язык текста в симуляторе, логов и сообщений об ошибках
- wish_items - язык предметов в симуляторе (должен совпадать с языком в banner баннере)
- messages - язык сообщений в чате
- html_template - шаблон для рендера истории молитв в HTML
- gbot_config - секция с настройками для сервисных команд
- gbot_command - команда, для которой применяются настройки (все команды здесь)
- enabled - включение или отключение команды (true или false)
- timeout - как часто можно использовать команду (в секундах)
- permissions - каким категориям зрителей доступна команда
- broadcaster - для автора канала
- mod - для модераторов
- vip - для зрителей с VIP
- turbo - для зрителей с Twitch Turbo
- subscriber - для подписчиков
- user - все остальные
- gbot_command - команда, для которой применяются настройки (все команды здесь)
- send_dev_stats - включение или отключение отправки анонимной статистики
- test_mode - режим тестирования, Twitch бот не включается, автоматически делаются 100 молитв
Здесь перечислены блоки с текстом, которые симулятор или чат-бот используют во время работы. В каждый блок можно добавлять или удалять строки. В каждом блоке должна быть минимум 1 строка.
- user_splash_text - отображается во время первой стадии анимации под ником зрителя
- chatbot_text - чат-бот использует в ответах зрителям в чате на трансляции
- notify_text - используется для напоминания зрителям, когда их таймаут заканчивается
- channel_points_text - используется для ответа зрителям, которые использовали баллы канала
- status_message - одна строка, текст для сервисной команды gbot_status
- stats_message - одна строка, текст для сервисной команды gbot_stats
В сообщениях бота можно указывать параметры:
- Общие для блоков chatbot_text и channel_points_text
- username - упоминание пользователя, который использовал команду
- wish_count - сколько всего молитв сделал пользователь
- wish_count_w4 - сколько было сделано молитв после последней выпавшей 4★
- wish_count_w5 - сколько было сделано молитв после последней выпавшей 5★
- wishes_in_cmd - сколько будет сделано молитв за использование команды
- que_num - номер в очереди молитв
- Для блока chatbot_text
- user_wish_delay - сколько пользователю придется подождать перед следующим использованием команды (параметр wish_timeout)
- global_wish_delay - как часто весь чат может использовать команду
- Для блока channel_points_text
- reward_cost - стоимость награды в баллах, которую активировал пользователь
- Для блока notify_text
- username - упоминание пользователя, который использовал команду
- command - команда в виде wish_command_prefix + wish_command
- Для блока user_splash_text
- wish_count - сколько всего молитв сделал пользователь
- wishes_in_cmd - сколько будет сделано молитв за использоание команды
- gems_in_cmd - сколько стоят молитвы в примогемах
- Для status_message
- user_mention - зритель, который вызвал команду
- proj_name - название симулятора
- proj_ver - версия симулятора
- proj_url - ссылка на github страницу симулятора
- wcommand - команда молитв для чат бота
- wcommand_c - сколько
wcommandбыло использовано - rcommand_c - сколько команд за баллы использовано
- wish_points - сколько баллов канала потрачено зрителями на молитвы
- wish_gems - сколько потратили зрители примогемов (всего молитв * 160)
- wish_queue_size - размер очереди на молитвы
- Для stats_message
- user_mention - зритель, который вызвал команду
- user_wish_all - сколько зритель сделал молитв
- user_wish_epic - сколько было сделано молитв с предыдущего гаранта на 4★
- user_wish_leg - сколько было сделано молитв с предыдущего гаранта на 5★
- user_primo - сколько потратил зритель примогемов (молитвы зрителя * 160)
В симуляторе используется система баннеров похожая на игровую. Настраиваемые баннеры находятся в папке banners. По умолчанию включен баннер all_in_one.json, в котором представлены все предметы (оружие, персонажи и скины)
Каждый баннер представляет собой JSON файл:
- banner_name - имя баннера
- wish_fo_garant - сколько молитв должен сделать пользователь до гаранта 4★
- wish_fo_chance - общий шанс выпадения 4★ (от 0.01 до 99.99)
- wish_fi_garant - сколько молитв должен сделать пользователь до гаранта 5★
- wish_fi_chance - общий шанс выпадения 5★ (от 0.01 до 99.99)
- wish_fi_soft_a - после какой молитвы начнет работать мягкий гарант (должен быть меньше wish_fi_garant)
- wishes - секция с предметами в баннере
Внутри wishes находятся секции 5, 4 и 3, которые обозначают количество звезд у предмета. Внутри каждой из них указываются предметы, доступные для этого баннера:
- char - персонажи и скины
- weapon - оружие
- garant - гарантированные предметы и система 50/50
Во всех секциях должен находиться хотя бы один предмет, если в garant есть хотя бы один предмет, то будет работать система гарантированных предметов.
Список всех доступных предметов для баннеров
Персонажи, 5★
АльбедоКамисато АякаКамисато АятоДилюкЭолаГань ЮйХу ТаоАратаки ИттоДжиннКаэдэхара КадзухаКэ ЦинКлиКокомиЯэ МикоМонаЦи ЦиРайдэнШэнь ХэТартальяВентиСяоЁимияЧжун ЛиЭлойЕ ЛаньТигнариНилуСайноНахидаСтранникАль-ХайтамБай ЧжуДэхьяЛиниНёвиллетРизлиФуринаНавия
Оружие, 5★
Харан гэппаку фуцуРассекающий туманНебесный мечМеч СоколаКромсатель пиковКлятва свободыДрагоценный омутПеснь разбитых сосенНекованыйНебесное величиеКраснорогий камнерубВолчья погибельУсмиритель бедСияющая жатваПосох ХомыПокоритель вихряНефритовый коршунНебесная осьЭлегия погибелиПолярная звездаНебесное крылоЛук АмосаГромовой пульсАква симулякрумОхотничья тропаПамять о пылиНебесный атласМолитва святым ветрамИстина кагураВечное лунное сияниеКлюч Хадж-нисутПосох алых песковСновидения тысячи ночейВоспоминания ТулайтуллыПервый великий фокусМаяк тростникового моряВеликолепие лазурного сводаСвет лиственного разрезаКазначейский надзорОбряд вечного теченияБлеск тихих водОбдуманное суждение
Персонажи, 4★
ЭмберБарбараБэй ДоуБеннетЧун ЮньДионаФишльГороКэйаЛизаНин ГуанНоэлльРэйзорРозарияКудзё СараСаюСахарозаТомаСян ЛинСин ЦюСинь ЯньЯнь ФэйЮнь ЦзиньКуки СинобуСиканоин ХэйдзоДориКоллеиКандакияЛайлаФарузанФреминеКавехЛинеттЯо ЯоКирараМикаШарлоттаШеврёз
Оружие, 4★
Черногорский длинный мечЧёрный мечЦеремониальный мечСтальное жалоПрототип: ЗлобаОсквернённое желаниеМеч-флейтаМеч ФавонияМеч нисхожденияМеч аристократовКиноварное веретеноДраконий рыкВспышка во тьмеАмэнома КагэутиЛегендарный клинок ИссинЛегендарный клинок ИссинКагоцурубэ ИссинДеревянный клинокЧерногорская бритваЦеремониальный двуручный мечПрототип: АрхаичныйМеч-колоколМеч драконьей костиКоролевский двуручный мечКацурагикири НагамасаКаменный мечЗаснеженное звёздное сереброДождерезДвуручный меч ФавонияБлагодатный владыка водБелая теньАкуомаруРегалия лесаЧерногорская пикаСмертельный бойРежущий волны плавникПрототип: Звёздный блескПика полумесяцаКрест-копьё КитаинКоролевское копьёКопьё ФавонияКопьё Драконьего хребтаКаменное копьёГроза драконов«Улов»Пронзающий лунуЧерногорский боевой лукЦеремониальный лукХищникХамаюмиСоставной лукРжавый лукПрототип: ПолумесяцОхотник во тьмеОда анемонииЛуна МоунКоролевский лукЗелёный лукВальс Нирваны НочиБоевой лук ФавонияБесструнныйГаснущие сумеркиПриближённый короляИссушительЧерногорский агатЦеремониальные мемуарыСолнечная жемчужинаПрототип: ЯнтарьПлод вечной мерзлотыПеснь странникаОко сознанияОко клятвыМорской атласКоролевский гримуарКольцо ХакусинКодекс ФавонияИстории ДодокоВино и песниПлод восполненияЛунное сияние ксифосаАквамарин МахарыКопьё послания ветровСкитающаяся звездаТокабо сигурэБаллада фьордовГрандиозный финал глубинПеревозчик Флёв СандрСверкание чистых водЦветок в латахКлюв ибисаСправедливая наградаЖертвенный нефритНаследник слепящего солнцаМелодия покояГоворящая палицаТень волныВолчий клыкПеснь необъятной лазуриВерфьПереносная мотопилаБур рудоискателяДальномерМеч Нарциссенкрейца«Магический супермеч высшего владыки»
Оружие, 3★
Холодное лезвиеФилейный ножТёмный железный мечПредвестник зариМеч путешественникаМеч небесного всадникаМеч из белого железаМеч драконьей кровиМеталлическая теньДубина переговоровБольшой меч небесного всадникаЧёрная кистьБелая кистьАлебарда МиллелитаРогаткаПосыльныйЛук воронаКлятва стрелкаИзогнутый лукЭпос о драконоборцахРуководство по магииПотусторонняя историяПарный нефритИзумрудный шарЯнтарная жемчужина
Скины, 4★ и 5★
Алая ночьЛетний блескСон морского бризаФлёр орхидеиЯркая лёгкостьСон вечной ночиЗа вольный дух церквиВстреча звёзд и луныСкаут на все стоНаследие ГуннхильдрТень ветра в парусахЦветущий свет звёздПослание весеннего цветения
Перед всеми командами используется префикс из wish_command_prefix
- gbot_stats - выводит статистику молитв в чат
- gbot_status - выводит информацию о симуляторе
- gbot_sound - включает или отключает звук во время молитв
- gbot_pause - включает или отключает обработку молитв. Бот по-прежнему будет реагировать на использование баллов канала или команды чата, но анимации молитв воспроизводится не будут, при этом все молитвы будут находиться в очереди пока обработка не будет снова включена
- gbot_history - сгенерирует историю круток в html для зрителя, который использовал команду, и отправит общедоступную ссылку для ее просмотра
- gbot_history_all - то же, что и
gbot_history, но для всех зрителей
Проект собирает анонимную статистику. В нее входят время запуска и название канала из файла конфигурации. Никакие личные данные, IP адреса или токены от каналов\ботов не передаются.







