d0c8c1744c
Added default alias !list for !loot (bebot like) Changed the layout of !notes, its more compact now. fixed !count in the rare case of an empty private channel
126 lines
6.8 KiB
Python
126 lines
6.8 KiB
Python
import random
|
|
import re
|
|
|
|
from core.conn import Conn
|
|
from core.db import DB
|
|
from core.decorators import instance
|
|
from core.logger import Logger
|
|
from core.lookup.character_service import CharacterService
|
|
from core.setting_service import SettingService
|
|
from core.text import Text
|
|
from core.tyrbot import Tyrbot
|
|
|
|
|
|
@instance("DingController")
|
|
class DingController:
|
|
axp = re.compile(
|
|
r"ICC planet-wide announcement: (.+) has been awarded the highest honorary rank for "
|
|
r"outstanding dedication to the defence of Rubi-Ka.")
|
|
xp = re.compile(
|
|
r"You feel the core of your being shift, as the source makes room for a divine presence. "
|
|
r"'(.+)' has reached enlightenment.")
|
|
|
|
text_options_xp = ["Congratz! You have reached the end of the line! NO MORE FUN FOR YOU! :P",
|
|
|
|
"Holy shit, you finally made it! What an accomplishment... Congratulations "
|
|
"<font color=#FF1493>{name}</font>, for reaching a level reserved for the greatest!",
|
|
|
|
"Damn <font color=#FF1493>{name}</font>.... I'm going to miss you a great deal, "
|
|
"because after this, we no longer can be together <font color=#FF1493>{name}</font>."
|
|
" We must part so you can continue getting your research and AI levels done! Farewell!",
|
|
|
|
"Hey <font color=#FF1493>{name}</font>, how was the inferno grind? "
|
|
"I'm glad to see you made it through, and congratulations for "
|
|
"finally getting the level you well deserved!",
|
|
|
|
"Our congratulations, to our newest <font color=#FF1493>level 220</font> member, "
|
|
"<font color=#FF1493>{name}</font>, for his dedication. "
|
|
"We present him with his new honorary rank, Chuck Norris!",
|
|
|
|
"Holy crap, you actually did it! Dear <font color=#FF1493>{name}</font>, "
|
|
"I salute you for your determination and sheer awesomeness. Congratulations, "
|
|
"to our newest <font color=#FF1493>level 220</font> member!"]
|
|
|
|
text_options_axp = ["Congratz! You have reached the end of the line! NO MORE FUN FOR YOU! :P",
|
|
|
|
"Holy shit, you finally made it! What an accomplishment... "
|
|
"Congratulations <font color=#FF1493>{name}</font>, "
|
|
"for reaching <green>Alien Level 30</green>!",
|
|
|
|
"Damn... I'm going to miss you a great deal, because after this, we no longer can be together, "
|
|
"<font color=#FF1493>{name}</font>. We must part so you can continue getting your research!"
|
|
" Farewell!",
|
|
|
|
"Hey <font color=#FF1493>{name}</font>, how was the <green>alien</green> grind?"
|
|
" I'm glad to see you made it through, "
|
|
"and congratulations for finally getting the level you well deserved!",
|
|
|
|
"Our congratulations, to our newest <green>Alien Level 30</green> member, "
|
|
"<font color=#FF1493>{name}</font>, for his dedication. "
|
|
"We present him with his new honorary rank, <yellow>Vindicator</yellow>!",
|
|
|
|
"Holy crap, you actually did it! Dear <font color=#FF1493>{name}</font>, "
|
|
"I salute you for your determination and sheer awesomeness. Congratulations, "
|
|
"to our newest <green>Alien Level 30</green> member!"]
|
|
|
|
def __init__(self):
|
|
self.logger = Logger(__name__)
|
|
|
|
def inject(self, registry):
|
|
self.bot: Tyrbot = registry.get_instance("bot")
|
|
self.text: Text = registry.get_instance("text")
|
|
self.setting_service: SettingService = registry.get_instance("setting_service")
|
|
self.character_service: CharacterService = registry.get_instance("character_service")
|
|
self.message_hub_service = registry.get_instance("message_hub_service")
|
|
self.db: DB = registry.get_instance("db")
|
|
|
|
def pre_start(self):
|
|
self.bot.register_packet_handler(36, self.handle_ding)
|
|
self.bot.register_packet_handler(35, self.handle_ding)
|
|
|
|
def handle_ding(self, conn: Conn, packet):
|
|
if conn.char_id != self.bot.get_char_id():
|
|
return
|
|
# AXP 30
|
|
if packet.id == 36:
|
|
info = re.findall(self.axp, packet.message)
|
|
if info:
|
|
user = self.get_user(info[0])
|
|
if user:
|
|
self.bot.send_mass_message(user.char_id,
|
|
f"<green>Game Over</green>! "
|
|
f"{random.choice(self.text_options_axp).format(**user)} "
|
|
f"<yellow>[{self.generate_output('AI 220')}]</yellow>",
|
|
log_message=True)
|
|
|
|
# XP 220
|
|
if packet.id == 35:
|
|
info = re.findall(self.xp, packet.message)
|
|
if info:
|
|
user = self.get_user(info[0])
|
|
if user:
|
|
self.bot.send_mass_message(user.char_id,
|
|
f"<font color=#FF1493>Game Over</font>! "
|
|
f"{random.choice(self.text_options_xp).format(**user)} "
|
|
f"<yellow>[{self.generate_output('Level 220')}]</yellow>",
|
|
log_message=True)
|
|
|
|
def generate_output(self, level):
|
|
invite = self.text.make_chatcmd("click here", "/tell <myname> discord invite",
|
|
style="style='text-decoration:none'")
|
|
sys = self.text.make_chatcmd("SYSTEM", "/tell <myname> admins",
|
|
style="style='text-decoration:none'")
|
|
blob = self.text.format_page('Info',
|
|
f"<header>::: Information :::</header><br><br>"
|
|
f"This automated message has been sent to you by:<br><br>"
|
|
f"<header2>{self.bot.get_char_name()}</header2> <yellow>[<green>{sys}</green>]</yellow><br>"
|
|
f"<header2>Reason for this Message: "
|
|
f"<highlight>You dinged {level}</highlight></header2><br><br>"
|
|
f"<header2>Have you joined The Alliance Discord yet? "
|
|
f"If not <highlight>{invite}</highlight> to receive an invite. "
|
|
f"(/tell <myname> discord invite from your Main)</header2>")
|
|
return blob
|
|
|
|
def get_user(self, name):
|
|
return self.db.query_single("SELECT * FROM player where name=? and org_id in (SELECT * from orgs)", [name])
|