Чат-бот для Twitch на Python.
- Умеет использовать ИИ через ChatGPT, давая информацию по конкретному стримеру.
- Получать название музыкального трека играющего в группе Vkontakte через VK-api
- Можно добавлять свои команды, делая сколько угодно варивантов каждой !команды через regex, например трек можно вызвать !song, !трек, !music и т.д.
- Ответы можно адресовать: используйте префикс
@ник сообщение— бот добавит упоминание в ответ. - Антиспам: не более одного ответа для каждого пользователя в секунду. Количество секунд таймаута задаётся в переменной
GLOBAL_MSG_TIMEOUTв python-скрипте
- Подключается к Twitch-чату через IRC-протокол по OAuth-токену и заходит на каналы из
channelsв конфигурационном файле. - Простой интерфейс на appJar показывает вкладки под каналы/личные сообщения, ведет лог и может отправлять сообщения от имени бота.
- Полученные в чате сообщения обрабатываются так:
- Если это команда
!ai/!ии, выполняется запрос к OpenAI (модельgpt-4o-mini), ответ укорачивается и отправляется в чат. - Иначе проверяются регулярные выражения для команд (
!tg,!donate,!musicи любые другие) и формируется автоответ. - Для
!musicпри необходимости запрашивается VK API (status.get) для получения текущего трека.
- Если это команда
Основные параметры:
- openaikey — api ключ OpenAI (нужен для команд
!ai/!ии), чтобы получать ответы от ChatGPT - proxies — при необходимости задайте прокси для доступа к ChatGPT; оставьте пустыми строками, если не нужно. Пример:
"http": "socks5://sshlogin:pass123@127.0.0.1:1080", "https": "socks5://sshlogin:pass123@127.0.0.1:1080" - vk_token и vk_group_id — VK-api token и ID группы VK для получения названия трека, который играет в этой группе VK;
- username и token — логин и oauth токен twitch-аккаунта от имени которого работает бот
- channels — имя канала с символом # перед его названием, где должен работать бот
- Если
user.usernameилиuser.tokenне заданы, при первом запуске откроется окно ввода, после чего данные будут сохранены вglobal_vars.json.
Чтобы добавить информацию по определенному стримеру, на канале которого работает этот бот, нужно добавить её в content строку в массиве messages в python-скрипте.
Первую строку про ассистента оставить как есть. Далее указывается конкретная информация, например о стримере Buster.
"messages": [
{"role": "system", "content": " Ты - ассистент чат-бот на стриме, отвечающий на вопросы об известных людях. Отвечай кратко и без лишнего."},
{"role": "system", "content": "Основная информация о стримере Buster: Вячеслав Леонтьев, родился 25 февраля 1997 года, Москва, стримит на Twitch."},
- На основе этой информации команды !ai или !ии будут отвечать на любые вопросы, например:
Чтобы добавить свою команду, нужно в .py-скрите дополнить массив regxs = {...} новым элементом, выбрать ему любое название, к примеру 'dis1' и прописать туда regex по которому распознаётся команда, и далее ответ, например чтобы ссылка на Discord:
regxs = {
...
'dis1': [r"^!(discord|дискорд|дис)\W{0,2}$", " ~ Discord invite -> discord.gg/rNJ8g1Z4"],
...
}
После добавления нужно перезапустить бота, после чего любое из слов в regex строке, например !дис или !discord будет давать инвайт в Дискорд.
Поддерживаются версии Python 3.7–3.10
Скопируйте файлы проекта в отдельную папку. Затем создайте и активируйте виртуальное окружение, установите зависимости:
python -m venv venv- Для Windows
call venv/Scripts/activate- Для Linux-систем
source venv/bin/activate- Установка зависимостей
pip install -r requirements.txt- Запуск чат-бота
python alextbot.py