Initial Release of IGNCore version 2.5
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
from core.command_service import CommandService
|
||||
from core.decorators import instance
|
||||
|
||||
|
||||
@instance(name="command_service", override=True)
|
||||
class CustomCommandService(CommandService):
|
||||
def inject(self, registry):
|
||||
super().inject(registry)
|
||||
|
||||
def handle_unknown_command(self, command_str: str, command_args, channel, sender, reply):
|
||||
if command_str.startswith('agcr'):
|
||||
return
|
||||
else:
|
||||
self.relay_hub_service.send_message("access_denied_logger", sender,
|
||||
f"[UNKNOWN] {sender.name}: {command_str} {command_args}",
|
||||
f"[UNKNOWN] {sender.name}: {command_str} {command_args}")
|
||||
if sender.access_level["label"] != "all":
|
||||
self.bot.send_mass_message(sender.char_id,
|
||||
self.getresp("global", "unknown_command", {"cmd": command_str}))
|
||||
@@ -0,0 +1,57 @@
|
||||
from core.aochat import server_packets
|
||||
from core.conn import Conn
|
||||
from core.decorators import instance, command, event
|
||||
from core.logger import Logger
|
||||
from modules.standard.online.online_controller import OnlineController
|
||||
|
||||
|
||||
@instance(name="online_controller", override=True)
|
||||
class OrgOnlineController(OnlineController):
|
||||
MESSAGE_SOURCE = 'RELAY_LOGGER'
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def inject(self, registry):
|
||||
super().inject(registry)
|
||||
self.logger = Logger('relay')
|
||||
self.character_service = registry.get_instance("character_service")
|
||||
self.event_service = registry.get_instance("event_service")
|
||||
|
||||
@event("connect", 'Add bots as members')
|
||||
def connect_event(self, _, _1):
|
||||
for bot in self.db.query('SELECT * FROM account where disabled = 0'):
|
||||
self.buddy_service.add_buddy(bot.char_id, 'member')
|
||||
|
||||
@command(command="online", params=[],
|
||||
description="shows online players",
|
||||
access_level="member")
|
||||
def online_all_cmd(self, request):
|
||||
query = "and channel_id IN (1, 2) "
|
||||
params = [self.bot.name, self.bot.get_char_id()]
|
||||
blob = self.online_display.format_by_channel_prof(query, params)
|
||||
self.bot.send_mass_message(request.sender.char_id, self.online_display.format_blob(blob))
|
||||
|
||||
def pre_start(self):
|
||||
super().pre_start()
|
||||
self.bot.register_packet_handler(server_packets.PrivateChannelClientJoined.id,
|
||||
self.handle_private_channel_client_joined)
|
||||
self.bot.register_packet_handler(server_packets.PrivateChannelClientLeft.id,
|
||||
self.handle_private_channel_client_left)
|
||||
self.bot.register_packet_handler(server_packets.PrivateChannelMessage.id,
|
||||
self.handle_private_channel_message)
|
||||
|
||||
def handle_private_channel_message(self, conn: Conn, packet: server_packets.PrivateChannelMessage):
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
if packet.private_channel_id == conn.char_id:
|
||||
self.logger.log_chat(conn, "PG", char_name, packet.message)
|
||||
|
||||
def handle_private_channel_client_joined(self, conn: Conn, packet: server_packets.PrivateChannelClientJoined):
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
if packet.private_channel_id == conn.char_id:
|
||||
self.logger.log_chat(conn, "PG", None, f"{char_name} joined the channel.")
|
||||
|
||||
def handle_private_channel_client_left(self, conn: Conn, packet: server_packets.PrivateChannelClientLeft):
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
if packet.private_channel_id == conn.char_id:
|
||||
self.logger.log_chat(conn, "PG", None, f"{char_name} left the channel.")
|
||||
@@ -0,0 +1,45 @@
|
||||
from core.decorators import instance, event
|
||||
from modules.core.private_channel.private_channel_controller import PrivateChannelController
|
||||
|
||||
|
||||
@instance(name="private_channel_controller", override=True)
|
||||
class CustomPrivateChannelController(PrivateChannelController):
|
||||
def inject(self, registry):
|
||||
super().inject(registry)
|
||||
|
||||
@event("connect", "Reinvite previous raiders")
|
||||
def reinvite_all(self, _, _1):
|
||||
for user in self.reinvite:
|
||||
# For preventing help ping pong, we're disabling the message on the relay bot.
|
||||
# self.bot.send_mass_message(user, "You have been <green>reinvited</green> into my private channel "
|
||||
# "after a bot restart or crash; Sorry for the inconvenience.")
|
||||
self.priv.invite(user)
|
||||
del self.reinvite
|
||||
|
||||
def handle_incoming_relay_message(self, ctx):
|
||||
self.bot.send_private_channel_message(ctx.formatted_message, fire_outgoing_event=False)
|
||||
|
||||
@event(event_type="member_logon", description="Send autoinvites to players logging in")
|
||||
def logon_event(self, _, data):
|
||||
if not self.bot.is_ready():
|
||||
if data.packet.char_id not in self.reinvite:
|
||||
account = data.account
|
||||
if account.disabled == 1:
|
||||
pass
|
||||
elif account.auto_invite == 1:
|
||||
self.reinvite.append(data.packet.char_id)
|
||||
return
|
||||
if self.private_channel_service.in_private_channel(data.packet.char_id):
|
||||
return
|
||||
account = data.account
|
||||
if account.disabled == 1:
|
||||
return
|
||||
if self.db.query_single("SELECT * from org_bots where char_id=?", [data.packet.char_id]):
|
||||
return
|
||||
if account.auto_invite == 1:
|
||||
if self.pork.get_character_info(data.packet.char_id).org_id != self.bot.public_channel_service.org_id:
|
||||
self.private_channel_service.invite(data.packet.char_id)
|
||||
# For preventing help ping pong, we're disabling the message on the relay bot.
|
||||
# self.bot.send_mass_message(data.packet.char_id, "You have been "
|
||||
# "<highlight>auto invited</highlight> "
|
||||
# "into my private channel.")
|
||||
Reference in New Issue
Block a user