@@ -1,2 +1,3 @@ | |||||
config.json | config.json | ||||
docker-compose.yml | |||||
docker-compose.yml | |||||
__pycache__ |
@@ -19,19 +19,22 @@ import json | |||||
from os import environ | from os import environ | ||||
from enum import Enum | from enum import Enum | ||||
from typing import Union | |||||
class Command: | class Command: | ||||
name: str | name: str | ||||
message: str | message: str | ||||
aliases: [str] | |||||
def __init__(self, name: str, message: str): | |||||
def __init__(self, name: str, message: str, aliases: [str] = []): | |||||
self.name = name | self.name = name | ||||
self.message = message | self.message = message | ||||
self.aliases = aliases | |||||
@classmethod | @classmethod | ||||
def from_dict(cls, params: dict): | def from_dict(cls, params: dict): | ||||
return Command(params['name'], params['message']) | |||||
return Command(params['name'], params['message'], params.get('aliases', [])) | |||||
class TimerStrategy(Enum): | class TimerStrategy(Enum): | ||||
@@ -114,6 +117,16 @@ class Config: | |||||
Timer.from_dict(params.get('timer', {})) | Timer.from_dict(params.get('timer', {})) | ||||
) | ) | ||||
def find_command(self, command: str) -> Union[None, Command]: | |||||
if command.startswith(self.command_prefix): | |||||
command = command[1:] | |||||
for c in self.commands: | |||||
if c.name == command or command in c.aliases: | |||||
return c | |||||
return None | |||||
def get_config(file_path: str): | def get_config(file_path: str): | ||||
with open(file_path, 'r') as config_file: | with open(file_path, 'r') as config_file: | ||||
@@ -17,7 +17,7 @@ | |||||
import irc3 | import irc3 | ||||
from .config import get_config, TimerStrategy | |||||
from .config import TimerStrategy | |||||
from random import shuffle | from random import shuffle | ||||
from datetime import datetime, timedelta | from datetime import datetime, timedelta | ||||
@@ -57,12 +57,11 @@ class TwitchBot: | |||||
@irc3.event(irc3.rfc.PRIVMSG) | @irc3.event(irc3.rfc.PRIVMSG) | ||||
def on_msg(self, target, mask, data, **_): | def on_msg(self, target, mask, data, **_): | ||||
print(target) | |||||
for command in self.config.commands: | |||||
if ('%s ' % data.lower()).startswith('%s%s ' % (self.config.command_prefix, command.name.lower())): | |||||
print('%s: %s%s' % (mask, self.config.command_prefix, command.name)) | |||||
self.bot.privmsg(target, self._parse_variables(command.message, mask)) | |||||
break | |||||
command = self.config.find_command(data.lower().split(' ')[0]) | |||||
if command is not None: | |||||
print('%s: %s%s' % (mask, self.config.command_prefix, command.name)) | |||||
self.bot.privmsg(target, self._parse_variables(command.message, mask)) | |||||
self.nb_messages_since_timer += 1 | self.nb_messages_since_timer += 1 | ||||
self.play_timer() | self.play_timer() | ||||