Skip to content

gamedever1/alex-twitch-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Alex Twitch Bot

Чат-бот для 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) для получения текущего трека.

Конфигурация в файле global_vars.json

Основные параметры:

  • 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.

Настройка ai-бота, добавление известной информации

Чтобы добавить информацию по определенному стримеру, на канале которого работает этот бот, нужно добавить её в content строку в массиве messages в python-скрипте. Первую строку про ассистента оставить как есть. Далее указывается конкретная информация, например о стримере Buster.

"messages": [
 {"role": "system", "content": " Ты - ассистент чат-бот на стриме, отвечающий на вопросы об известных людях. Отвечай кратко и без лишнего."},
 {"role": "system", "content": "Основная информация о стримере Buster: Вячеслав Леонтьев, родился 25 февраля 1997 года, Москва, стримит на Twitch."},
  • На основе этой информации команды !ai или !ии будут отвечать на любые вопросы, например:

Chat screenshot


Добавление новой команды для бота

Чтобы добавить свою команду, нужно в .py-скрите дополнить массив regxs = {...} новым элементом, выбрать ему любое название, к примеру 'dis1' и прописать туда regex по которому распознаётся команда, и далее ответ, например чтобы ссылка на Discord:

regxs = {
...
    'dis1':  [r"^!(discord|дискорд|дис)\W{0,2}$", " ~ Discord invite -> discord.gg/rNJ8g1Z4"],
...
}

После добавления нужно перезапустить бота, после чего любое из слов в regex строке, например !дис или !discord будет давать инвайт в Дискорд.


Установка и запуск на Python

Поддерживаются версии 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

About

Twitch bot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages