mirror of
https://github.com/iio612/DEFENDER.git
synced 2026-02-13 11:14:23 +00:00
Update parse_privmsg, now it returns sender, reciever, channel objects and the message
This commit is contained in:
@@ -8,7 +8,7 @@ from core.classes.protocols.interface import IProtocol
|
|||||||
from core.utils import tr
|
from core.utils import tr
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.definition import MSasl, MClient
|
from core.definition import MSasl, MClient, MUser, MChannel
|
||||||
|
|
||||||
class Inspircd(IProtocol):
|
class Inspircd(IProtocol):
|
||||||
|
|
||||||
@@ -1257,7 +1257,7 @@ class Inspircd(IProtocol):
|
|||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def parse_privmsg(self, server_msg: list[str]) -> dict[str, str]:
|
def parse_privmsg(self, server_msg: list[str]) -> tuple[Optional['MUser'], Optional['MUser'], Optional['MChannel'], str]:
|
||||||
"""Parse PRIVMSG message.
|
"""Parse PRIVMSG message.
|
||||||
>>> [':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
>>> [':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
||||||
>>> [':97KAAAAAF', 'PRIVMSG', '98KAAAAAB', ':My','Message','...']
|
>>> [':97KAAAAAF', 'PRIVMSG', '98KAAAAAB', ':My','Message','...']
|
||||||
@@ -1272,13 +1272,15 @@ class Inspircd(IProtocol):
|
|||||||
if scopy[0].startswith('@'):
|
if scopy[0].startswith('@'):
|
||||||
scopy.pop(0)
|
scopy.pop(0)
|
||||||
|
|
||||||
response = {
|
sender = self._User.get_user(self._Utils.clean_uid(scopy[0]))
|
||||||
"uid_sender": scopy[0].replace(':', ''),
|
reciever = self._User.get_user(self._Utils.clean_uid(scopy[2]))
|
||||||
"uid_reciever": self._Irc.User.get_uid(scopy[2]),
|
channel = self._Channel.get_channel(scopy[2]) if self._Channel.is_valid_channel(scopy[2]) else None
|
||||||
"channel": scopy[2] if self._Irc.Channel.is_valid_channel(scopy[2]) else None,
|
|
||||||
"message": " ".join(scopy[3:])
|
tmp_message = scopy[3:]
|
||||||
}
|
tmp_message = tmp_message[0].replace(':', '')
|
||||||
return response
|
message = ' '.join(tmp_message)
|
||||||
|
|
||||||
|
return sender, reciever, channel, message
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from typing import Optional, TYPE_CHECKING
|
|||||||
from core.classes.protocols.command_handler import CommandHandler
|
from core.classes.protocols.command_handler import CommandHandler
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.definition import MClient, MSasl
|
from core.definition import MClient, MSasl, MUser, MChannel
|
||||||
from core.irc import Irc
|
from core.irc import Irc
|
||||||
|
|
||||||
class IProtocol(ABC):
|
class IProtocol(ABC):
|
||||||
@@ -21,6 +21,8 @@ class IProtocol(ABC):
|
|||||||
self._Settings = uplink.Base.Settings
|
self._Settings = uplink.Base.Settings
|
||||||
self._Utils = uplink.Loader.Utils
|
self._Utils = uplink.Loader.Utils
|
||||||
self._Logs = uplink.Loader.Logs
|
self._Logs = uplink.Loader.Logs
|
||||||
|
self._User = uplink.User
|
||||||
|
self._Channel = uplink.Channel
|
||||||
|
|
||||||
self.Handler = CommandHandler(uplink.Loader)
|
self.Handler = CommandHandler(uplink.Loader)
|
||||||
|
|
||||||
@@ -348,7 +350,7 @@ class IProtocol(ABC):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def parse_privmsg(self, serverMsg: list[str]) -> dict[str, str]:
|
def parse_privmsg(self, serverMsg: list[str]) -> tuple[Optional['MUser'], Optional['MUser'], Optional['MChannel'], str]:
|
||||||
"""Parse PRIVMSG message.
|
"""Parse PRIVMSG message.
|
||||||
>>> [':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
>>> [':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
||||||
|
|
||||||
@@ -356,14 +358,7 @@ class IProtocol(ABC):
|
|||||||
serverMsg (list[str]): The server message to parse
|
serverMsg (list[str]): The server message to parse
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict[str, str]: The response as dictionary.
|
tuple[MUser(Sender), MUser(Reciever), MChannel, str]: Sender user model, reciever user model, Channel model, messgae.
|
||||||
```python
|
|
||||||
response = {
|
|
||||||
"uid": '97KAAAAAE',
|
|
||||||
"channel": '#welcome',
|
|
||||||
"message": 'This is my public message'
|
|
||||||
}
|
|
||||||
```
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ from core.utils import tr
|
|||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.classes.sasl import Sasl
|
from core.classes.sasl import Sasl
|
||||||
from core.definition import MClient, MSasl
|
from core.definition import MClient, MSasl, MUser, MChannel
|
||||||
|
from core.loader import Loader
|
||||||
|
|
||||||
class Unrealircd6(IProtocol):
|
class Unrealircd6(IProtocol):
|
||||||
|
|
||||||
@@ -701,7 +702,7 @@ class Unrealircd6(IProtocol):
|
|||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def parse_privmsg(self, serverMsg: list[str]) -> dict[str, str]:
|
def parse_privmsg(self, serverMsg: list[str]) -> tuple[Optional['MUser'], Optional['MUser'], Optional['MChannel'], str]:
|
||||||
"""Parse PRIVMSG message.
|
"""Parse PRIVMSG message.
|
||||||
>>> ['@....', ':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
>>> ['@....', ':97KAAAAAE', 'PRIVMSG', '#welcome', ':This', 'is', 'my', 'public', 'message']
|
||||||
>>> [':97KAAAAAF', 'PRIVMSG', '98KAAAAAB', ':sasa']
|
>>> [':97KAAAAAF', 'PRIVMSG', '98KAAAAAB', ':sasa']
|
||||||
@@ -710,19 +711,21 @@ class Unrealircd6(IProtocol):
|
|||||||
serverMsg (list[str]): The server message to parse
|
serverMsg (list[str]): The server message to parse
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict[str, str]: The response as dictionary.
|
tuple[MUser(Sender), MUser(Reciever), MChannel, str]: Sender user model, reciever user model, Channel model, messgae .
|
||||||
"""
|
"""
|
||||||
scopy = serverMsg.copy()
|
scopy = serverMsg.copy()
|
||||||
if scopy[0].startswith('@'):
|
if scopy[0].startswith('@'):
|
||||||
scopy.pop(0)
|
scopy.pop(0)
|
||||||
|
|
||||||
response = {
|
sender = self._User.get_user(self._Utils.clean_uid(scopy[0]))
|
||||||
"uid_sender": scopy[0].replace(':', ''),
|
reciever = self._User.get_user(self._Utils.clean_uid(scopy[2]))
|
||||||
"uid_reciever": self._Irc.User.get_uid(scopy[2]),
|
channel = self._Channel.get_channel(scopy[2]) if self._Channel.is_valid_channel(scopy[2]) else None
|
||||||
"channel": scopy[2] if self._Irc.Channel.is_valid_channel(scopy[2]) else None,
|
|
||||||
"message": " ".join(scopy[3:])
|
tmp_message = scopy[3:]
|
||||||
}
|
tmp_message = tmp_message[0].replace(':', '')
|
||||||
return response
|
message = ' '.join(tmp_message)
|
||||||
|
|
||||||
|
return sender, reciever, channel, message
|
||||||
|
|
||||||
#####################
|
#####################
|
||||||
# HANDLE EVENTS #
|
# HANDLE EVENTS #
|
||||||
|
|||||||
@@ -176,15 +176,13 @@ def create_new_clone(uplink: 'Clone', faker_instance: 'Faker', group: str = 'Def
|
|||||||
|
|
||||||
def handle_on_privmsg(uplink: 'Clone', srvmsg: list[str]) -> None:
|
def handle_on_privmsg(uplink: 'Clone', srvmsg: list[str]) -> None:
|
||||||
|
|
||||||
parser = uplink.Protocol.parse_privmsg(srvmsg)
|
senderObj, recieverObj, channel, message = uplink.Protocol.parse_privmsg(srvmsg)
|
||||||
uid_sender = uplink.Irc.Utils.clean_uid(parser.get('uid_sender', None))
|
|
||||||
senderObj = uplink.User.get_user(uid_sender)
|
|
||||||
|
|
||||||
if senderObj is not None:
|
if senderObj is not None:
|
||||||
if senderObj.hostname in uplink.Config.CLONE_LOG_HOST_EXEMPT:
|
if senderObj.hostname in uplink.Config.CLONE_LOG_HOST_EXEMPT:
|
||||||
return
|
return
|
||||||
senderMsg = parser.get('message', None)
|
senderMsg = message
|
||||||
clone_obj = uplink.Clone.get_clone(parser.get('uid_reciever', None))
|
clone_obj = recieverObj
|
||||||
|
|
||||||
if clone_obj is None:
|
if clone_obj is None:
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -62,13 +62,10 @@ def handle_on_mode(uplink: 'Defender', srvmsg: list[str]):
|
|||||||
|
|
||||||
def handle_on_privmsg(uplink: 'Defender', srvmsg: list[str]):
|
def handle_on_privmsg(uplink: 'Defender', srvmsg: list[str]):
|
||||||
# ['@mtag....',':python', 'PRIVMSG', '#defender', ':zefzefzregreg', 'regg', 'aerg']
|
# ['@mtag....',':python', 'PRIVMSG', '#defender', ':zefzefzregreg', 'regg', 'aerg']
|
||||||
sender = srvmsg[1].replace(':','')
|
|
||||||
channel = srvmsg[3]
|
|
||||||
message = srvmsg[4:]
|
|
||||||
message[0] = message[0].replace(':', '')
|
|
||||||
|
|
||||||
if uplink.ModConfig.sentinel == 1 and srvmsg[3] != uplink.Config.SERVICE_CHANLOG:
|
sender, reciever, channel, message = uplink.Protocol.parse_privmsg(srvmsg)
|
||||||
uplink.Protocol.send_priv_msg(uplink.Config.SERVICE_NICKNAME, f"{sender} say on {channel}: {' '.join(message)}", uplink.Config.SERVICE_CHANLOG)
|
if uplink.ModConfig.sentinel == 1 and channel.name != uplink.Config.SERVICE_CHANLOG:
|
||||||
|
uplink.Protocol.send_priv_msg(uplink.Config.SERVICE_NICKNAME, f"{sender.nickname} say on {channel.name}: {' '.join(message)}", uplink.Config.SERVICE_CHANLOG)
|
||||||
|
|
||||||
action_on_flood(uplink, srvmsg)
|
action_on_flood(uplink, srvmsg)
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user