From: Georgios Atheridis Date: Sat, 1 Jul 2023 10:58:55 +0000 (+0100) Subject: Update Subathon Timer X-Git-Url: https://git.atheridis.org/?a=commitdiff_plain;h=1d0259ba41b2e005127b4afeba6578fa9400b76c;p=ihaspeks%2Faptbot-ihaspeks.git Update Subathon Timer --- diff --git a/ihaspeks/commands/timer.py b/ihaspeks/commands/timer.py index 0e2e9ec..d73f013 100644 --- a/ihaspeks/commands/timer.py +++ b/ihaspeks/commands/timer.py @@ -6,7 +6,7 @@ from datetime import datetime import pytz import tools.smart_privmsg from aptbot.bot import Bot, Commands, Message -from scripts.subathon import sock +from scripts.subathon import send PERMISSION = 10 PREFIX = "\\" @@ -56,18 +56,18 @@ def set_time(ts: int): data = { "set_ts": ts, } - sock.send(json.dumps(data).encode()) + send(data) def add_time(ts: int): data = { "add_ts": ts, } - sock.send(json.dumps(data).encode()) + send(data) def now(): data = { - "set_ts": datetime.now(pytz.UTC), + "set_ts": int(datetime.timestamp(datetime.now(pytz.UTC))), } - sock.send(json.dumps(data).encode()) + send(data) diff --git a/ihaspeks/main.py b/ihaspeks/main.py index 7980c00..54fd63d 100644 --- a/ihaspeks/main.py +++ b/ihaspeks/main.py @@ -149,8 +149,10 @@ def start(bot: Bot, message: Message, stop_event: Event): def main(bot: Bot, message: Message): if message.command == Commands.PRIVMSG: if message.nick == "skgyorugo": - if message.value == "\\test": - message = tools.test_message.test() + if message.value.startswith("\\test"): + message = tools.test_message.test(*message.value.split(" ")[1:]) + scripts.subathon.subathon(bot, message) + return if message.command == Commands.PRIVMSG: database_manager.add_message_to_chat_history(message) if message.value[0] in {"?", "\\"}: diff --git a/ihaspeks/scripts/subathon.py b/ihaspeks/scripts/subathon.py index ce7265c..001b113 100644 --- a/ihaspeks/scripts/subathon.py +++ b/ihaspeks/scripts/subathon.py @@ -3,6 +3,7 @@ import logging import os import socket import sqlite3 +import time import socketio import tools.smart_privmsg @@ -123,7 +124,7 @@ def subathon(bot: Bot, message: Message): if bits := message.tags.get("bits"): # Every 400 bits is the same as a sub, # assuming you already subbed 10 times - div_count = (int(bits) // 400) * calculate_increase(10) + div_count = (int(bits) // 400) * calculate_increase(5) # Add 3 seconds for every 1 bit under 400 bits rest_count = (int(bits) % 400) * 3 @@ -141,7 +142,7 @@ def subathon(bot: Bot, message: Message): "time": total_timer, "name": display_name, } - sock.send(json.dumps(data).encode()) + send(data) verb = "INCREASED ihaspeHappy" if total_timer > 0 else "DECREASED ihaspeAngi" msg = ( @@ -167,10 +168,10 @@ def donations(bot: Bot, message: Message): def event(data): if data["type"] == "donation": amount_cents = int(float(data["message"][0]["amount"]) * 100) - div_count = (amount_cents // 400) * calculate_increase(10) + div_count = (amount_cents // 400) * calculate_increase(5) # Add 3 seconds for every 1 cent under 400 cents - rest_count = (amount_cents % 400) * 3 + rest_count = (amount_cents % 400) * 4 timer_add = div_count + rest_count display_name = data["message"][0]["from"] @@ -180,7 +181,7 @@ def donations(bot: Bot, message: Message): "time": total_timer, "name": display_name, } - sock.send(json.dumps(data).encode()) + send(data) logger.info("%s donated %s", display_name, amount_cents) verb = ( @@ -195,12 +196,25 @@ def donations(bot: Bot, message: Message): def calculate_increase(sub_count: int) -> int: - scale = 0.006 + scale = 0.01 avg_time = ceil(30.0 * exp(-scale * sub_count) + 5.0) - var_time = 35.0 / (1 + exp(-0.15 * (sub_count - 10))) - 5.0 + var_time = 35.0 / (1 + exp(-0.3 * (sub_count - 11))) return ceil(normal(avg_time, var_time) * 60.0) +def send(data: dict) -> None: + global sock + try: + sock.send(json.dumps(data).encode()) + except (BrokenPipeError, OSError) as e: + logger.exception(e) + close() + time.sleep(1) + sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + start() + sock.send(json.dumps(data).encode()) + + def start() -> None: sock.connect(socket_file) diff --git a/ihaspeks/tools/test_message.py b/ihaspeks/tools/test_message.py index b403098..aebcbcb 100644 --- a/ihaspeks/tools/test_message.py +++ b/ihaspeks/tools/test_message.py @@ -8,7 +8,7 @@ PATH = os.path.join(TOOLS_PATH, "..") def test(test_type: str, sub_type: str) -> Message: - text_path = os.path.join(PATH, "messages", test_type, sub_type + ".txt") + text_path = os.path.join(TOOLS_PATH, "messages", test_type, sub_type + ".txt") f = open(text_path, "w") message = random.choice(f.readlines()) f.close()