forked from platypush/platypush
184 lines
5.3 KiB
Python
184 lines
5.3 KiB
Python
from abc import ABC
|
|
from base64 import b64encode
|
|
from typing import Optional
|
|
|
|
from platypush.message.event import Event
|
|
|
|
|
|
class IRCEvent(Event, ABC):
|
|
"""
|
|
IRC base event.
|
|
"""
|
|
def __init__(self, *args, server: Optional[str] = None, port: Optional[int] = None,
|
|
alias: Optional[str] = None, channel: Optional[str] = None, **kwargs):
|
|
super().__init__(*args, server=server, port=port, alias=alias, channel=channel, **kwargs)
|
|
|
|
|
|
class IRCChannelJoinEvent(IRCEvent):
|
|
"""
|
|
Event triggered upon account channel join.
|
|
"""
|
|
def __init__(self, *args, nick: str, **kwargs):
|
|
super().__init__(*args, nick=nick, **kwargs)
|
|
|
|
|
|
class IRCChannelKickEvent(IRCEvent):
|
|
"""
|
|
Event triggered upon account channel kick.
|
|
"""
|
|
def __init__(self, *args, target_nick: str, source_nick: Optional[str] = None, **kwargs):
|
|
super().__init__(*args, source_nick=source_nick, target_nick=target_nick, **kwargs)
|
|
|
|
|
|
class IRCModeEvent(IRCEvent):
|
|
"""
|
|
Event triggered when the IRC mode of a channel user changes.
|
|
"""
|
|
def __init__(
|
|
self, *args, mode: str, channel: Optional[str] = None,
|
|
source: Optional[str] = None,
|
|
target_: Optional[str] = None, **kwargs
|
|
):
|
|
super().__init__(*args, mode=mode, channel=channel, source=source, target_=target_, **kwargs)
|
|
|
|
|
|
class IRCPartEvent(IRCEvent):
|
|
"""
|
|
Event triggered when an IRC nick parts.
|
|
"""
|
|
def __init__(self, *args, nick: str, **kwargs):
|
|
super().__init__(*args, nick=nick, **kwargs)
|
|
|
|
|
|
class IRCQuitEvent(IRCEvent):
|
|
"""
|
|
Event triggered when an IRC nick quits.
|
|
"""
|
|
def __init__(self, *args, nick: str, **kwargs):
|
|
super().__init__(*args, nick=nick, **kwargs)
|
|
|
|
|
|
class IRCNickChangeEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a IRC nick changes.
|
|
"""
|
|
def __init__(self, *args, before: str, after: str, **kwargs):
|
|
super().__init__(*args, before=before, after=after, **kwargs)
|
|
|
|
|
|
class IRCConnectEvent(IRCEvent):
|
|
"""
|
|
Event triggered upon server connection.
|
|
"""
|
|
|
|
|
|
class IRCDisconnectEvent(IRCEvent):
|
|
"""
|
|
Event triggered upon server disconnection.
|
|
"""
|
|
|
|
|
|
class IRCPrivateMessageEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a private message is received.
|
|
"""
|
|
def __init__(self, *args, text: str, nick: str, mentions_me: bool = False, **kwargs):
|
|
super().__init__(*args, text=text, nick=nick, mentions_me=mentions_me, **kwargs)
|
|
|
|
|
|
class IRCPublicMessageEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a public message is received.
|
|
"""
|
|
def __init__(self, *args, text: str, nick: str, mentions_me: bool = False, **kwargs):
|
|
super().__init__(*args, text=text, nick=nick, mentions_me=mentions_me, **kwargs)
|
|
|
|
|
|
class IRCDCCRequestEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC connection request is received.
|
|
"""
|
|
def __init__(self, *args, address: str, port: int, nick: str, **kwargs):
|
|
super().__init__(*args, address=address, port=port, nick=nick, **kwargs)
|
|
|
|
|
|
class IRCDCCMessageEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC message is received.
|
|
"""
|
|
def __init__(self, *args, address: str, body: bytes, **kwargs):
|
|
super().__init__(
|
|
*args, address=address, body=b64encode(body).decode(), **kwargs
|
|
)
|
|
|
|
|
|
class IRCCTCPMessageEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a CTCP message is received.
|
|
"""
|
|
def __init__(self, *args, address: str, message: str, **kwargs):
|
|
super().__init__(*args, address=address, message=message, **kwargs)
|
|
|
|
|
|
class IRCDCCFileRequestEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC file send request is received.
|
|
"""
|
|
def __init__(
|
|
self, *args, nick: str, address: str, file: str,
|
|
port: int, size: Optional[int] = None, **kwargs
|
|
):
|
|
super().__init__(
|
|
*args, nick=nick, address=address, file=file, port=port,
|
|
size=size, **kwargs
|
|
)
|
|
|
|
|
|
class IRCDCCFileRecvCompletedEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC file transfer RECV is completed.
|
|
"""
|
|
def __init__(
|
|
self, *args, address: str, port: int, file: str,
|
|
size: Optional[int] = None, **kwargs
|
|
):
|
|
super().__init__(
|
|
*args, address=address, file=file,
|
|
port=port, size=size, **kwargs
|
|
)
|
|
|
|
|
|
class IRCDCCFileRecvCancelledEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC file transfer RECV is cancelled.
|
|
"""
|
|
def __init__(
|
|
self, *args, address: str, port: int, file: str,
|
|
error: str, **kwargs
|
|
):
|
|
super().__init__(
|
|
*args, address=address, file=file, port=port,
|
|
error=error, **kwargs
|
|
)
|
|
|
|
|
|
class IRCDCCFileSendCompletedEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC file transfer SEND is completed.
|
|
"""
|
|
def __init__(self, *args, address: str, port: int, file: str, **kwargs):
|
|
super().__init__(*args, address=address, file=file, port=port, **kwargs)
|
|
|
|
|
|
class IRCDCCFileSendCancelledEvent(IRCEvent):
|
|
"""
|
|
Event triggered when a DCC file transfer SEND is cancelled.
|
|
"""
|
|
def __init__(
|
|
self, *args, address: str, port: int, file: str,
|
|
error: str, **kwargs
|
|
):
|
|
super().__init__(
|
|
*args, address=address, file=file, port=port,
|
|
error=error, **kwargs
|
|
)
|