renaming and fixing parameters

This commit is contained in:
Alex Orid 2021-04-26 14:47:15 -04:00
parent 2c7a2b3ef0
commit 65a723b5df
11 changed files with 138 additions and 163 deletions

View File

@ -8,4 +8,4 @@ RUN pip3 install -r requirements_sa_command.txt
COPY . . COPY . .
CMD [ "python3", "standalone_channelpoints.py"] CMD [ "python3", "standalone_channelrewards.py"]

View File

@ -1,24 +0,0 @@
from abc import ABCMeta
from channel_points.channelPoints_base import AbstractChannelPoints
import utilities_script as utility
class ChannelPointReward_Hydration_v2(AbstractChannelPoints, metaclass=ABCMeta):
"""
this is the hydration reward.
"""
ChannelPointRewardName = "hydration"
def __init__(self):
super().__init__(ChannelPointReward_Hydration_v2.ChannelPointRewardName, n_args=1, command_type=AbstractChannelPoints.ChannelPointsType.Ver2)
self.help = ["This is a hydration channel point reward."]
self.isChannelPointRewardEnabled = True
def do_ChannelPointReward(self, source = AbstractChannelPoints.ChannelPointsSource.default, user = "User", command = "", rest = "", bonusData = None):
returnString = user + " sent: [ " + command + " ] with: " + rest
#print(returnString)
return returnString
def get_help(self):
return self.help

View File

@ -1,25 +0,0 @@
from abc import ABCMeta
from commands.command_base import AbstractCommand
import utilities_script as utility
class Command_test_v2(AbstractCommand, metaclass=ABCMeta):
"""
this is the test command.
"""
command = "testerino"
def __init__(self):
super().__init__(Command_test_v2.command, n_args=1, command_type=AbstractCommand.CommandType.Ver2)
self.help = ["This is a test command.",
"\nExample:","testerino"]
self.isCommandEnabled = True
def do_command(self, source = AbstractCommand.CommandSource.default, user = "User", command = "", rest = "", bonusData = None):
returnString = user + " sent: [ " + command + " ] with: " + rest
#print(returnString)
return returnString
def get_help(self):
return self.help

View File

@ -2,7 +2,7 @@ from abc import ABCMeta, abstractmethod
from enum import Enum, auto from enum import Enum, auto
class AbstractChannelPoints(metaclass=ABCMeta): class AbstractChannelRewards(metaclass=ABCMeta):
""" """
This is the base class for channel points. In order to load a channel point redemption a few conditions must be met: This is the base class for channel points. In order to load a channel point redemption a few conditions must be met:
1) The class name MUST begin with 'ChannelPoint' i.e. CommandTTS, CommandBan, etc... 1) The class name MUST begin with 'ChannelPoint' i.e. CommandTTS, CommandBan, etc...
@ -12,43 +12,45 @@ class AbstractChannelPoints(metaclass=ABCMeta):
class and to then call super().__init__(command) class and to then call super().__init__(command)
""" """
class ChannelPointsType(Enum): class ChannelRewardsType(Enum):
NONE = auto() NONE = auto()
Ver2 = auto() channelPoints = auto()
twitch_bits = auto()
twitch_subs = auto()
class ChannelPointsSource(Enum): class ChannelRewardsSource(Enum):
default = 0 default = 0
Praxis = 1 Praxis = 1
Twitch = 2 Twitch = 2
Discord = 3 Discord = 3
def __init__(self, ChannelPointRewardName: str, n_args: int = 0, channelPointReward_type=ChannelPointsType.NONE, helpText:list=["No Help"], isChannelPointRewardEnabled = True): def __init__(self, ChannelRewardName: str, n_args: int = 0, ChannelReward_type=ChannelRewardsType.NONE, helpText:list=["No Help"], isChannelRewardEnabled = True):
self.ChannelPointRewardName = ChannelPointRewardName self.ChannelRewardName = ChannelRewardName
self.n_args = n_args self.n_args = n_args
self.ChannelPointRewardType = channelPointReward_type self.ChannelRewardType = ChannelReward_type
self.help = helpText self.help = helpText
self.isChannelPointRewardEnabled = isChannelPointRewardEnabled self.isChannelRewardEnabled = isChannelRewardEnabled
# no touch! # no touch!
def get_args(self, text: str) -> list: def get_args(self, text: str) -> list:
return text.split(" ")[0:self.n_args + 1] return text.split(" ")[0:self.n_args + 1]
# no touch! # no touch!
def get_ChannelPointRewardName(self) -> str: def get_ChannelRewardName(self) -> str:
return self.ChannelPointRewardName return self.ChannelRewardName
# no touch! # no touch!
def get_ChannelPointRewardType(self): def get_ChannelRewardType(self):
return self.ChannelPointRewardType return self.ChannelRewardType
# no touch! # no touch!
def get_help(self): def get_help(self):
return self.help return self.help
# no touch! # no touch!
def is_ChannelPointReward_enabled(self): def is_ChannelReward_enabled(self):
return self.isChannelPointRewardEnabled return self.isChannelRewardEnabled
@abstractmethod @abstractmethod
def do_ChannelPointReward(self, bot, user, command, rest, bonusData): def do_ChannelReward(self, source, user, command, rest, bonusData):
pass pass

View File

@ -5,17 +5,17 @@ import os
import sys import sys
from typing import Dict from typing import Dict
from channel_points.channelPoints_base import AbstractChannelPoints from channel_rewards.channelRewards_base import AbstractChannelRewards
#New #New
def load_rewards(channelPointsType: AbstractChannelPoints.ChannelPointsType) -> Dict[str, AbstractChannelPoints]: def load_rewards(channelRewardsType: AbstractChannelRewards.ChannelRewardsType) -> Dict[str, AbstractChannelRewards]:
print(" -Loading ", channelPointsType ," ChannelPointRewards...\n") print(" -Loading ", channelRewardsType ," ChannelRewards...\n")
channelPointRewards = compile_and_load(channelPointsType) ChannelRewards = compile_and_load(channelRewardsType)
return channelPointRewards return ChannelRewards
#New #New
def compile_and_load_file(path: str, channelPointsType: AbstractChannelPoints.ChannelPointsType): def compile_and_load_file(path: str, channelRewardsType: AbstractChannelRewards.ChannelRewardsType):
module_name = os.path.split(path)[1].replace(".py", "") module_name = os.path.split(path)[1].replace(".py", "")
spec = importlib.util.spec_from_file_location(module_name, path) spec = importlib.util.spec_from_file_location(module_name, path)
module = importlib.util.module_from_spec(spec) module = importlib.util.module_from_spec(spec)
@ -23,26 +23,26 @@ def compile_and_load_file(path: str, channelPointsType: AbstractChannelPoints.Ch
spec.loader.load_module(module_name) spec.loader.load_module(module_name)
for name, obj in inspect.getmembers(module): for name, obj in inspect.getmembers(module):
if inspect.isclass(obj) and name.startswith("ChannelPointReward"): if inspect.isclass(obj) and name.startswith("ChannelReward"):
channelPointReward_inst = obj() ChannelReward_inst = obj()
if channelPointsType == channelPointReward_inst.get_ChannelPointRewardType(): if channelRewardsType == ChannelReward_inst.get_ChannelRewardType():
print(" ---Successfully loaded %s: %s" % (channelPointsType, channelPointReward_inst.get_ChannelPointRewardType())) print(" ---Successfully loaded %s: %s" % (channelRewardsType, ChannelReward_inst.get_ChannelRewardType()))
return channelPointReward_inst.get_ChannelPointRewardType(), channelPointReward_inst return ChannelReward_inst.get_ChannelRewardType(), ChannelReward_inst
elif channelPointsType != channelPointReward_inst.get_ChannelPointRewardType(): elif channelRewardsType != ChannelReward_inst.get_ChannelRewardType():
print(" -%s ChannelPointsType did not match: %s for: %s" % (channelPointReward_inst.get_ChannelPointRewardType(), channelPointsType, channelPointReward_inst.get_ChannelPointRewardName())) print(" -%s ChannelRewardsType did not match: %s for: %s" % (ChannelReward_inst.get_ChannelRewardType(), channelRewardsType, ChannelReward_inst.get_ChannelRewardName()))
return "", None return "", None
#New #New
def compile_and_load(ChannelPointsRewardType: AbstractChannelPoints.ChannelPointsType) -> Dict[str, AbstractChannelPoints]: def compile_and_load(ChannelRewardType: AbstractChannelRewards.ChannelRewardsType) -> Dict[str, AbstractChannelRewards]:
dic = {} dic = {}
implementations = get_implementations_dir() implementations = get_implementations_dir()
for dirName, subdirList, fileList in os.walk(implementations): for dirName, subdirList, fileList in os.walk(implementations):
for file in fileList: for file in fileList:
name = os.path.join(dirName, file) name = os.path.join(dirName, file)
print("compiling: %s" % name) print("compiling: %s" % name)
name, reward = compile_and_load_file(name, ChannelPointsRewardType) name, reward = compile_and_load_file(name, ChannelRewardType)
if reward is not None and reward.ChannelPointRewardType is ChannelPointsRewardType: if reward is not None and reward.ChannelRewardType is ChannelRewardType:
dic[name] = reward dic[name] = reward
break break
return dic return dic

View File

@ -0,0 +1,22 @@
from abc import ABCMeta
from channel_rewards.channelRewards_base import AbstractChannelRewards
class ChannelReward_Hydration_v2(AbstractChannelRewards, metaclass=ABCMeta):
"""
this is the hydration reward.
"""
ChannelRewardName = "hydration"
def __init__(self):
super().__init__(ChannelReward_Hydration_v2.ChannelRewardName, n_args=1, command_type=AbstractChannelRewards.ChannelRewardsType.channelPoints)
self.help = ["This is a hydration channel point reward."]
self.isChannelRewardEnabled = True
def do_ChannelReward(self, source = AbstractChannelRewards.ChannelRewardsSource.default, user = "User", command = "", rest = "", bonusData = None):
returnString = user + " sent: [ " + command + " ] with: " + rest
#print(returnString)
return returnString
def get_help(self):
return self.help

View File

@ -53,5 +53,5 @@ class AbstractCommand(metaclass=ABCMeta):
return self.isCommandEnabled return self.isCommandEnabled
@abstractmethod @abstractmethod
def do_command(self, bot, user, command, rest, bonusData): def do_command(self, source, user, command, rest, bonusData):
pass pass

View File

@ -6,8 +6,8 @@ services:
- 6009:6009 - 6009:6009
environment: environment:
- ISDOCKER=cat - ISDOCKER=cat
standalone_channelpoints: standalone_channelrewards:
image: standalone_channelpoints image: standalone_channelrewards
ports: ports:
- 6969:6969 - 6969:6969
environment: environment:

View File

@ -1,5 +1,5 @@
docker build --file Dockerfile_standalone_command --tag standalone_command . docker build --file Dockerfile_standalone_command --tag standalone_command .
docker build --file Dockerfile_standalone_channelpoints --tag standalone_channelpoints . docker build --file Dockerfile_standalone_channelRewards --tag standalone_channelrewards .
docker build --file Dockerfile_standalone_DiscordScript --tag standalone_discordscript . docker build --file Dockerfile_standalone_DiscordScript --tag standalone_discordscript .
docker build --file Dockerfile_standalone_TwitchScript --tag standalone_twitchscript . docker build --file Dockerfile_standalone_TwitchScript --tag standalone_twitchscript .
docker build --file Dockerfile_standalone_Twitch_Pubsub --tag standalone_twitch_pubsub . docker build --file Dockerfile_standalone_Twitch_Pubsub --tag standalone_twitch_pubsub .

View File

@ -1,78 +0,0 @@
import flask
from flask import request
import commands.loader as command_loader
from commands.command_base import AbstractCommand
api = flask.Flask(__name__)
# enable/disable this to get web pages of crashes returned
api.config["DEBUG"] = True
loadedCommands = {}
def init():
# todo load entire command library and cache it here
load_commands()
def load_commands():
global loadedCommands
loadedCommands = command_loader.load_commands(AbstractCommand.CommandType.Ver2)
def is_command(command: str) -> bool:
#print(command)
for cmd in loadedCommands:
#print(cmd)
if command == cmd:
return True
if command == "!echo":
return True
else:
return False
def handle_command(source, username, command, rest, bonusData):
if command == "!echo":
message = "Got payload [%s]" % rest
#print(message)
return flask.make_response("{\"message\":\"%s\"}" % message, 200, {"Content-Type": "application/json"})
cmd:AbstractCommand = loadedCommands[command]
if cmd is not None:
cmd_response = cmd.do_command(source, username, command, rest, bonusData)
return flask.make_response("{\"message\":\"%s\"}" % cmd_response, 200, {"Content-Type": "application/json"})
#print("Doing a command")
@api.route('/api/v1/command', methods=['GET'])
def command_check():
if 'name' in request.args:
if is_command(request.args['name']):
return flask.make_response('', 200)
else:
return flask.make_response('', 404)
@api.route('/api/v1/exec', methods=['GET'])
def exec_command():
if 'command_name' not in request.args:
return flask.make_response('{\"text\":"Argument \'command_name\' not in request"}', 400)
if 'rest' not in request.args:
return flask.make_response('{\"text\":"Argument \'rest\' not in request"}', 400)
if 'command_source' not in request.args:
return flask.make_response('{\"text\":"Argument \'command_source\' not in request"}', 400)
if 'user_name' not in request.args:
username = "User"
else:
username = request.args['user_name']
return handle_command(request.args['command_source'], username, request.args['command_name'], request.args['rest'], request.args['bonus_data'])
if __name__ == '__main__':
init()
api.run(host='0.0.0.0', port=6969)

View File

@ -0,0 +1,78 @@
import flask
from flask import request
import channel_rewards.channelRewards_loader as rewards_loader
from channel_rewards.channelRewards_base import AbstractChannelRewards
api = flask.Flask(__name__)
# enable/disable this to get web pages of crashes returned
api.config["DEBUG"] = True
loadedRewards = {}
def init():
# todo load entire reward library and cache it here
load_rewards()
def load_rewards():
global loadedRewards
loadedRewards[AbstractChannelRewards.ChannelRewardsType.channelPoints] = rewards_loader.load_rewards(AbstractChannelRewards.ChannelRewardsType.channelPoints)
loadedRewards[AbstractChannelRewards.ChannelRewardsType.twitch_bits] = rewards_loader.load_rewards(AbstractChannelRewards.ChannelRewardsType.twitch_bits)
loadedRewards[AbstractChannelRewards.ChannelRewardsType.twitch_subs] = rewards_loader.load_rewards(AbstractChannelRewards.ChannelRewardsType.twitch_subs)
def is_reward(reward_name: str, reward_type: str) -> bool:
#print(reward)
for reward in loadedRewards[reward_type]:
#print(reward)
if reward_name == reward:
return True
if reward_name == "!echo":
return True
else:
return False
def handle_reward(source, username, reward_name, reward_type, rest, bonusData):
#reward:AbstractChannelRewards = loadedRewards[reward_name]
reward:AbstractChannelRewards = loadedRewards[reward_type][reward_name]
if reward is not None:
reward_response = reward.do_ChannelReward(source, username, reward_name, rest, bonusData)
return flask.make_response("{\"message\":\"%s\"}" % reward_response, 200, {"Content-Type": "application/json"})
#print("Doing a reward")
@api.route('/api/v1/reward', methods=['GET'])
def reward_check():
if 'reward_name' in request.args and 'reward_type' in request.args:
if is_reward(request.args['reward_name'], request.args['reward_type']):
return flask.make_response('', 200)
else:
return flask.make_response('', 404)
@api.route('/api/v1/exec', methods=['GET'])
def exec_reward():
if 'reward_name' not in request.args:
return flask.make_response('{\"text\":"Argument \'reward_name\' not in request"}', 400)
if 'reward_type' not in request.args:
return flask.make_response('{\"text\":"Argument \'reward_name\' not in request"}', 400)
if 'rest' not in request.args:
return flask.make_response('{\"text\":"Argument \'rest\' not in request"}', 400)
if 'reward_source' not in request.args:
return flask.make_response('{\"text\":"Argument \'reward_source\' not in request"}', 400)
if 'user_name' not in request.args:
username = "User"
else:
username = request.args['user_name']
return handle_reward(request.args['reward_source'], username, request.args['reward_name'], request.args['reward_type'], request.args['rest'], request.args['bonus_data'])
if __name__ == '__main__':
init()
api.run(host='0.0.0.0', port=6969)