platypush/platypush/message/event/irc.py

185 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
)