mirror of
https://github.com/znc/znc.git
synced 2026-07-06 01:41:12 +02:00
Teach modperl and modpython about CMessage and new hooks which accept it.
Fix #1084 Fix #1085
This commit is contained in:
@@ -67,3 +67,32 @@ EModRet OnDeleteNetwork(CIRCNetwork& Network)
|
||||
EModRet OnSendToClient(CString& sLine, CClient& Client)
|
||||
EModRet OnSendToIRC(CString& sLine)
|
||||
|
||||
EModRet OnRawMessage(CMessage& Message)
|
||||
EModRet OnNumericMessage(CNumericMessage& Message)
|
||||
void OnQuitMessage(CQuitMessage& Message, const std::vector<CChan*>& vChans)
|
||||
void OnNickMessage(CNickMessage& Message, const std::vector<CChan*>& vChans)
|
||||
void OnKickMessage(CKickMessage& Message)
|
||||
void OnJoinMessage(CJoinMessage& Message)
|
||||
void OnPartMessage(CPartMessage& Message)
|
||||
EModRet OnChanBufferPlayMessage(CMessage& Message)
|
||||
EModRet OnPrivBufferPlayMessage(CMessage& Message)
|
||||
EModRet OnUserRawMessage(CMessage& Message)
|
||||
EModRet OnUserCTCPReplyMessage(CCTCPMessage& Message)
|
||||
EModRet OnUserCTCPMessage(CCTCPMessage& Message)
|
||||
EModRet OnUserActionMessage(CActionMessage& Message)
|
||||
EModRet OnUserTextMessage(CTextMessage& Message)
|
||||
EModRet OnUserNoticeMessage(CNoticeMessage& Message)
|
||||
EModRet OnUserJoinMessage(CJoinMessage& Message)
|
||||
EModRet OnUserPartMessage(CPartMessage& Message)
|
||||
EModRet OnUserTopicMessage(CTopicMessage& Message)
|
||||
EModRet OnUserQuitMessage(CQuitMessage& Message)
|
||||
EModRet OnCTCPReplyMessage(CCTCPMessage& Message)
|
||||
EModRet OnPrivCTCPMessage(CCTCPMessage& Message)
|
||||
EModRet OnChanCTCPMessage(CCTCPMessage& Message)
|
||||
EModRet OnPrivActionMessage(CActionMessage& Message)
|
||||
EModRet OnChanActionMessage(CActionMessage& Message)
|
||||
EModRet OnPrivMessage(CTextMessage& Message)
|
||||
EModRet OnChanMessage(CTextMessage& Message)
|
||||
EModRet OnPrivNoticeMessage(CNoticeMessage& Message)
|
||||
EModRet OnChanNoticeMessage(CNoticeMessage& Message)
|
||||
EModRet OnTopicMessage(CTopicMessage& Message)
|
||||
|
||||
@@ -105,6 +105,9 @@ class MCString : public std::map<CString, CString> {};
|
||||
%template(BufLines) std::deque<CBufLine>;
|
||||
%template(VVString) std::vector<VCString>;
|
||||
|
||||
#define REGISTER_ZNC_MESSAGE(M) \
|
||||
%template(As_ ## M) CMessage::As<M>;
|
||||
|
||||
%typemap(out) std::map<CString, CNick> {
|
||||
HV* myhv = newHV();
|
||||
for (std::map<CString, CNick>::const_iterator i = $1.begin(); i != $1.end(); ++i) {
|
||||
@@ -129,6 +132,7 @@ class MCString : public std::map<CString, CString> {};
|
||||
%template(ZNCSocketManager) TSocketManager<CZNCSock>;
|
||||
%include "../include/znc/Socket.h"
|
||||
%include "../include/znc/FileUtils.h"
|
||||
%include "../include/znc/Message.h"
|
||||
%include "../include/znc/Modules.h"
|
||||
%include "../include/znc/Nick.h"
|
||||
%include "../include/znc/Chan.h"
|
||||
|
||||
@@ -106,6 +106,36 @@ public:
|
||||
EModRet OnDeleteNetwork(CIRCNetwork& Network) override;
|
||||
EModRet OnSendToClient(CString& sLine, CClient& Client) override;
|
||||
EModRet OnSendToIRC(CString& sLine) override;
|
||||
|
||||
EModRet OnRawMessage(CMessage& Message) override;
|
||||
EModRet OnNumericMessage(CNumericMessage& Message) override;
|
||||
void OnQuitMessage(CQuitMessage& Message, const std::vector<CChan*>& vChans) override;
|
||||
void OnNickMessage(CNickMessage& Message, const std::vector<CChan*>& vChans) override;
|
||||
void OnKickMessage(CKickMessage& Message) override;
|
||||
void OnJoinMessage(CJoinMessage& Message) override;
|
||||
void OnPartMessage(CPartMessage& Message) override;
|
||||
EModRet OnChanBufferPlayMessage(CMessage& Message) override;
|
||||
EModRet OnPrivBufferPlayMessage(CMessage& Message) override;
|
||||
EModRet OnUserRawMessage(CMessage& Message) override;
|
||||
EModRet OnUserCTCPReplyMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnUserCTCPMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnUserActionMessage(CActionMessage& Message) override;
|
||||
EModRet OnUserTextMessage(CTextMessage& Message) override;
|
||||
EModRet OnUserNoticeMessage(CNoticeMessage& Message) override;
|
||||
EModRet OnUserJoinMessage(CJoinMessage& Message) override;
|
||||
EModRet OnUserPartMessage(CPartMessage& Message) override;
|
||||
EModRet OnUserTopicMessage(CTopicMessage& Message) override;
|
||||
EModRet OnUserQuitMessage(CQuitMessage& Message) override;
|
||||
EModRet OnCTCPReplyMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnPrivCTCPMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnChanCTCPMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnPrivActionMessage(CActionMessage& Message) override;
|
||||
EModRet OnChanActionMessage(CActionMessage& Message) override;
|
||||
EModRet OnPrivMessage(CTextMessage& Message) override;
|
||||
EModRet OnChanMessage(CTextMessage& Message) override;
|
||||
EModRet OnPrivNoticeMessage(CNoticeMessage& Message) override;
|
||||
EModRet OnChanNoticeMessage(CNoticeMessage& Message) override;
|
||||
EModRet OnTopicMessage(CTopicMessage& Message) override;
|
||||
};
|
||||
|
||||
static inline CPerlModule* AsPerlModule(CModule* p) {
|
||||
|
||||
@@ -21,6 +21,14 @@ use ZNC;
|
||||
use IO::File;
|
||||
use feature 'switch', 'say';
|
||||
|
||||
package ZNC::CMessage;
|
||||
sub As {
|
||||
# e.g. $msg->As('CNumericMessage')
|
||||
my ($self, $name) = @_;
|
||||
my $method = "As_$name";
|
||||
$self->$method;
|
||||
}
|
||||
|
||||
package ZNC::Core;
|
||||
|
||||
my %modrefcount;
|
||||
@@ -375,6 +383,181 @@ sub OnDeleteNetwork {}
|
||||
sub OnSendToClient {}
|
||||
sub OnSendToIRC {}
|
||||
|
||||
# Deprecated non-Message functions should still work, for now.
|
||||
sub OnRawMessage {}
|
||||
sub OnNumericMessage {}
|
||||
sub OnQuitMessage { my ($self, $msg, @chans) = @_; $self->OnQuit($msg->GetNick, $msg->GetReason, @chans) }
|
||||
sub OnNickMessage { my ($self, $msg, @chans) = @_; $self->OnNick($msg->GetNick, $msg->GetNewNick, @chans) }
|
||||
sub OnKickMessage { my ($self, $msg) = @_; $self->OnKick($msg->GetNick, $msg->GetKickedNick, $msg->GetChan, $msg->GetReason) }
|
||||
sub OnJoinMessage { my ($self, $msg) = @_; $self->OnJoin($msg->GetNick, $msg->GetChan) }
|
||||
sub OnPartMessage { my ($self, $msg) = @_; $self->OnPart($msg->GetNick, $msg->GetChan, $msg->GetReason) }
|
||||
sub OnChanBufferPlayMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $old = $msg->ToString($ZNC::CMessage::ExcludeTags);
|
||||
my $modified = $old;
|
||||
my ($ret) = $self->OnChanBufferPlayLine($msg->GetChan, $msg->GetClient, $modified);
|
||||
$msg->Parse($modified) if $old ne $modified;
|
||||
return $ret;
|
||||
}
|
||||
sub OnPrivBufferPlayMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $old = $msg->ToString($ZNC::CMessage::ExcludeTags);
|
||||
my $modified = $old;
|
||||
my ($ret) = $self->OnPrivBufferPlayLine($msg->GetClient, $modified);
|
||||
$msg->Parse($modified) if $old ne $modified;
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserRawMessage {}
|
||||
sub OnUserCTCPReplyMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $target = $msg->GetTarget;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnUserCTCPReply($target, $text);
|
||||
$msg->SetTarget($target);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserCTCPMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $target = $msg->GetTarget;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnUserCTCP($target, $text);
|
||||
$msg->SetTarget($target);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserActionMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $target = $msg->GetTarget;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnUserAction($target, $text);
|
||||
$msg->SetTarget($target);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserTextMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $target = $msg->GetTarget;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnUserMsg($target, $text);
|
||||
$msg->SetTarget($target);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserNoticeMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $target = $msg->GetTarget;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnUserNotice($target, $text);
|
||||
$msg->SetTarget($target);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserJoinMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $chan = $msg->GetTarget;
|
||||
my $key = $msg->GetKey;
|
||||
my ($ret) = $self->OnUserJoin($chan, $key);
|
||||
$msg->SetTarget($chan);
|
||||
$msg->SetKey($key);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserPartMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $chan = $msg->GetTarget;
|
||||
my $reason = $msg->GetReason;
|
||||
my ($ret) = $self->OnUserPart($chan, $reason);
|
||||
$msg->SetTarget($chan);
|
||||
$msg->SetReason($reason);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserTopicMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $chan = $msg->GetTarget;
|
||||
my $topic = $msg->GetTopic;
|
||||
my ($ret) = $self->OnUserTopic($chan, $topic);
|
||||
$msg->SetTarget($chan);
|
||||
$msg->SetTopic($topic);
|
||||
return $ret;
|
||||
}
|
||||
sub OnUserQuitMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $reason = $msg->GetReason;
|
||||
my ($ret) = $self->OnUserQuit($reason);
|
||||
$msg->SetReason($reason);
|
||||
return $ret;
|
||||
}
|
||||
sub OnCTCPReplyMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnCTCPReply($msg->GetNick, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnPrivCTCPMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnPrivCTCP($msg->GetNick, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnChanCTCPMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnChanCTCP($msg->GetNick, $msg->GetChan, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnPrivActionMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnPrivAction($msg->GetNick, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnChanActionMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnChanAction($msg->GetNick, $msg->GetChan, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnPrivMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnPrivMsg($msg->GetNick, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnChanMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnChanMsg($msg->GetNick, $msg->GetChan, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnPrivNoticeMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnPrivNotice($msg->GetNick, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnChanNoticeMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $text = $msg->GetText;
|
||||
my ($ret) = $self->OnChanNotice($msg->GetNick, $msg->GetChan, $text);
|
||||
$msg->SetText($text);
|
||||
return $ret;
|
||||
}
|
||||
sub OnTopicMessage {
|
||||
my ($self, $msg) = @_;
|
||||
my $topic = $msg->GetTopic;
|
||||
my ($ret) = $self->OnTopic($msg->GetNick, $msg->GetChan, $topic);
|
||||
$msg->SetTopic($topic);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
# In Perl "undefined" is allowed value, so perl modules may continue using OnMode and not OnMode2
|
||||
sub OnChanPermission2 { my $self = shift; $self->OnChanPermission(@_) }
|
||||
sub OnOp2 { my $self = shift; $self->OnOp(@_) }
|
||||
|
||||
@@ -67,11 +67,42 @@ EModRet OnDeleteNetwork(CIRCNetwork& Network)
|
||||
EModRet OnSendToClient(CString& sLine, CClient& Client)
|
||||
EModRet OnSendToIRC(CString& sLine)
|
||||
|
||||
EModRet OnRawMessage(CMessage& Message)
|
||||
EModRet OnNumericMessage(CNumericMessage& Message)
|
||||
void OnQuitMessage(CQuitMessage& Message, const std::vector<CChan*>& vChans)
|
||||
void OnNickMessage(CNickMessage& Message, const std::vector<CChan*>& vChans)
|
||||
void OnKickMessage(CKickMessage& Message)
|
||||
void OnJoinMessage(CJoinMessage& Message)
|
||||
void OnPartMessage(CPartMessage& Message)
|
||||
EModRet OnChanBufferPlayMessage(CMessage& Message)
|
||||
EModRet OnPrivBufferPlayMessage(CMessage& Message)
|
||||
EModRet OnUserRawMessage(CMessage& Message)
|
||||
EModRet OnUserCTCPReplyMessage(CCTCPMessage& Message)
|
||||
EModRet OnUserCTCPMessage(CCTCPMessage& Message)
|
||||
EModRet OnUserActionMessage(CActionMessage& Message)
|
||||
EModRet OnUserTextMessage(CTextMessage& Message)
|
||||
EModRet OnUserNoticeMessage(CNoticeMessage& Message)
|
||||
EModRet OnUserJoinMessage(CJoinMessage& Message)
|
||||
EModRet OnUserPartMessage(CPartMessage& Message)
|
||||
EModRet OnUserTopicMessage(CTopicMessage& Message)
|
||||
EModRet OnUserQuitMessage(CQuitMessage& Message)
|
||||
EModRet OnCTCPReplyMessage(CCTCPMessage& Message)
|
||||
EModRet OnPrivCTCPMessage(CCTCPMessage& Message)
|
||||
EModRet OnChanCTCPMessage(CCTCPMessage& Message)
|
||||
EModRet OnPrivActionMessage(CActionMessage& Message)
|
||||
EModRet OnChanActionMessage(CActionMessage& Message)
|
||||
EModRet OnPrivMessage(CTextMessage& Message)
|
||||
EModRet OnChanMessage(CTextMessage& Message)
|
||||
EModRet OnPrivNoticeMessage(CNoticeMessage& Message)
|
||||
EModRet OnChanNoticeMessage(CNoticeMessage& Message)
|
||||
EModRet OnTopicMessage(CTopicMessage& Message)
|
||||
|
||||
EModRet OnAddUser(CUser& User, CString& sErrorRet)
|
||||
EModRet OnDeleteUser(CUser& User)
|
||||
void OnClientConnect(CZNCSock* pSock, const CString& sHost, unsigned short uPort)
|
||||
void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP)
|
||||
EModRet OnUnknownUserRaw(CClient* pClient, CString& sLine)
|
||||
EModRet OnUnknownUserRawMessage(CMessage& Message)
|
||||
bool IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState)=false
|
||||
void OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState)
|
||||
EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, CModInfo::EModuleType eType, bool& bSuccess, CString& sRetMsg)
|
||||
|
||||
@@ -106,6 +106,9 @@ class MCString : public std::map<CString, CString> {};
|
||||
%template(VVString) std::vector<VCString>;
|
||||
%template(VClients) std::vector<CClient*>;
|
||||
|
||||
#define REGISTER_ZNC_MESSAGE(M) \
|
||||
%template(As_ ## M) CMessage::As<M>;
|
||||
|
||||
%typemap(in) CString& {
|
||||
String* p;
|
||||
int res = SWIG_IsOK(SWIG_ConvertPtr($input, (void**)&p, SWIG_TypeQuery("String*"), 0));
|
||||
@@ -153,6 +156,7 @@ class MCString : public std::map<CString, CString> {};
|
||||
%template(ZNCSocketManager) TSocketManager<CZNCSock>;
|
||||
%include "../include/znc/Socket.h"
|
||||
%include "../include/znc/FileUtils.h"
|
||||
%include "../include/znc/Message.h"
|
||||
%include "../include/znc/Modules.h"
|
||||
%include "../include/znc/Nick.h"
|
||||
%include "../include/znc/Chan.h"
|
||||
@@ -291,6 +295,15 @@ class CPyRetBool {
|
||||
}
|
||||
};
|
||||
|
||||
%extend CMessage {
|
||||
CString __str__() {
|
||||
return $self->ToString();
|
||||
}
|
||||
CString __repr__() {
|
||||
return $self->ToString();
|
||||
}
|
||||
};
|
||||
|
||||
%extend CZNC {
|
||||
PyObject* GetUserMap_() {
|
||||
PyObject* result = PyDict_New();
|
||||
|
||||
@@ -16,9 +16,13 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
// This class is used from python to call functions which accept CString&
|
||||
// __str__ is added to it in modpython.i
|
||||
class String {
|
||||
public:
|
||||
CString s;
|
||||
|
||||
String(const CString& s = "") : s(s) {}
|
||||
};
|
||||
|
||||
class CModPython;
|
||||
@@ -123,12 +127,43 @@ public:
|
||||
EModRet OnSendToClient(CString& sLine, CClient& Client) override;
|
||||
EModRet OnSendToIRC(CString& sLine) override;
|
||||
|
||||
EModRet OnRawMessage(CMessage& Message) override;
|
||||
EModRet OnNumericMessage(CNumericMessage& Message) override;
|
||||
void OnQuitMessage(CQuitMessage& Message, const std::vector<CChan*>& vChans) override;
|
||||
void OnNickMessage(CNickMessage& Message, const std::vector<CChan*>& vChans) override;
|
||||
void OnKickMessage(CKickMessage& Message) override;
|
||||
void OnJoinMessage(CJoinMessage& Message) override;
|
||||
void OnPartMessage(CPartMessage& Message) override;
|
||||
EModRet OnChanBufferPlayMessage(CMessage& Message) override;
|
||||
EModRet OnPrivBufferPlayMessage(CMessage& Message) override;
|
||||
EModRet OnUserRawMessage(CMessage& Message) override;
|
||||
EModRet OnUserCTCPReplyMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnUserCTCPMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnUserActionMessage(CActionMessage& Message) override;
|
||||
EModRet OnUserTextMessage(CTextMessage& Message) override;
|
||||
EModRet OnUserNoticeMessage(CNoticeMessage& Message) override;
|
||||
EModRet OnUserJoinMessage(CJoinMessage& Message) override;
|
||||
EModRet OnUserPartMessage(CPartMessage& Message) override;
|
||||
EModRet OnUserTopicMessage(CTopicMessage& Message) override;
|
||||
EModRet OnUserQuitMessage(CQuitMessage& Message) override;
|
||||
EModRet OnCTCPReplyMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnPrivCTCPMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnChanCTCPMessage(CCTCPMessage& Message) override;
|
||||
EModRet OnPrivActionMessage(CActionMessage& Message) override;
|
||||
EModRet OnChanActionMessage(CActionMessage& Message) override;
|
||||
EModRet OnPrivMessage(CTextMessage& Message) override;
|
||||
EModRet OnChanMessage(CTextMessage& Message) override;
|
||||
EModRet OnPrivNoticeMessage(CNoticeMessage& Message) override;
|
||||
EModRet OnChanNoticeMessage(CNoticeMessage& Message) override;
|
||||
EModRet OnTopicMessage(CTopicMessage& Message) override;
|
||||
|
||||
// Global Modules
|
||||
EModRet OnAddUser(CUser& User, CString& sErrorRet) override;
|
||||
EModRet OnDeleteUser(CUser& User) override;
|
||||
void OnClientConnect(CZNCSock* pSock, const CString& sHost, unsigned short uPort) override;
|
||||
void OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) override;
|
||||
EModRet OnUnknownUserRaw(CClient* pClient, CString& sLine) override;
|
||||
EModRet OnUnknownUserRawMessage(CMessage& Message) override;
|
||||
bool IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState) override;
|
||||
void OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState) override;
|
||||
virtual EModRet OnModuleLoading(const CString& sModName, const CString& sArgs,
|
||||
|
||||
@@ -458,6 +458,180 @@ class Module:
|
||||
def OnRawMode2(self, OpNick, Channel, sModes, sArgs):
|
||||
return self.OnRawMode(OpNick, Channel, sModes, sArgs)
|
||||
|
||||
def OnRawMessage(self, msg):
|
||||
pass
|
||||
|
||||
def OnNumericMessage(self, msg):
|
||||
pass
|
||||
|
||||
# Deprecated non-Message functions should still work, for now.
|
||||
def OnQuitMessage(self, msg, vChans):
|
||||
return self.OnQuit(msg.GetNick(), msg.GetReason(), vChans)
|
||||
|
||||
def OnNickMessage(self, msg, vChans):
|
||||
return self.OnNick(msg.GetNick(), msg.GetNewNick(), vChans)
|
||||
|
||||
def OnKickMessage(self, msg):
|
||||
return self.OnKick(msg.GetNick(), msg.GetKickedNick(), msg.GetChan(), msg.GetReason())
|
||||
|
||||
def OnJoinMessage(self, msg):
|
||||
return self.OnJoin(msg.GetNick(), msg.GetChan())
|
||||
|
||||
def OnPartMessage(self, msg):
|
||||
return self.OnPart(msg.GetNick(), msg.GetChan(), msg.GetReason())
|
||||
|
||||
def OnChanBufferPlayMessage(self, msg):
|
||||
modified = String()
|
||||
old = modified.s = msg.ToString(CMessage.ExcludeTags)
|
||||
ret = self.OnChanBufferPlayLine(msg.GetChan(), msg.GetClient(), modified)
|
||||
if old != modified.s:
|
||||
msg.Parse(modified.s)
|
||||
return ret
|
||||
|
||||
def OnPrivBufferPlayMessage(self, msg):
|
||||
modified = String()
|
||||
old = modified.s = msg.ToString(CMessage.ExcludeTags)
|
||||
ret = self.OnPrivBufferPlayLine(msg.GetClient(), modified)
|
||||
if old != modified.s:
|
||||
msg.Parse(modified.s)
|
||||
return ret
|
||||
|
||||
def OnUserRawMessage(self, msg):
|
||||
pass
|
||||
|
||||
def OnUserCTCPReplyMessage(self, msg):
|
||||
target = String(msg.GetTarget())
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnUserCTCPReply(target, text)
|
||||
msg.SetTarget(target.s)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnUserCTCPMessage(self, msg):
|
||||
target = String(msg.GetTarget())
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnUserCTCP(target, text)
|
||||
msg.SetTarget(target.s)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnUserActionMessage(self, msg):
|
||||
target = String(msg.GetTarget())
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnUserAction(target, text)
|
||||
msg.SetTarget(target.s)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnUserTextMessage(self, msg):
|
||||
target = String(msg.GetTarget())
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnUserMsg(target, text)
|
||||
msg.SetTarget(target.s)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnUserNoticeMessage(self, msg):
|
||||
target = String(msg.GetTarget())
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnUserNotice(target, text)
|
||||
msg.SetTarget(target.s)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnUserJoinMessage(self, msg):
|
||||
chan = String(msg.GetTarget())
|
||||
key = String(msg.GetKey())
|
||||
ret = self.OnUserJoin(chan, key)
|
||||
msg.SetTarget(chan.s)
|
||||
msg.SetKey(key.s)
|
||||
return ret
|
||||
|
||||
def OnUserPartMessage(self, msg):
|
||||
chan = String(msg.GetTarget())
|
||||
reason = String(msg.GetReason())
|
||||
ret = self.OnUserPart(chan, reason)
|
||||
msg.SetTarget(chan.s)
|
||||
msg.SetReason(reason.s)
|
||||
return ret
|
||||
|
||||
def OnUserTopicMessage(self, msg):
|
||||
chan = String(msg.GetTarget())
|
||||
topic = String(msg.GetTopic())
|
||||
ret = self.OnUserTopic(chan, topic)
|
||||
msg.SetTarget(chan.s)
|
||||
msg.SetTopic(topic.s)
|
||||
return ret
|
||||
|
||||
def OnUserQuitMessage(self, msg):
|
||||
reason = String(msg.GetReason())
|
||||
ret = self.OnUserQuit(reason)
|
||||
msg.SetReason(reason.s)
|
||||
return ret
|
||||
|
||||
def OnCTCPReplyMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnCTCPReply(msg.GetNick(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnPrivCTCPMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnPrivCTCP(msg.GetNick(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnChanCTCPMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnChanCTCP(msg.GetNick(), msg.GetChan(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnPrivActionMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnPrivAction(msg.GetNick(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnChanActionMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnChanAction(msg.GetNick(), msg.GetChan(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnPrivMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnPrivMsg(msg.GetNick(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnChanMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnChanMsg(msg.GetNick(), msg.GetChan(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnPrivNoticeMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnPrivNotice(msg.GetNick(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnChanNoticeMessage(self, msg):
|
||||
text = String(msg.GetText())
|
||||
ret = self.OnChanNotice(msg.GetNick(), msg.GetChan(), text)
|
||||
msg.SetText(text.s)
|
||||
return ret
|
||||
|
||||
def OnTopicMessage(self, msg):
|
||||
topic = String(msg.GetTopic())
|
||||
ret = self.OnTopic(msg.GetNick(), msg.GetChan(), topic)
|
||||
msg.SetTopic(topic.s)
|
||||
return ret
|
||||
|
||||
def OnUnknownUserRawMessage(self, msg):
|
||||
pass
|
||||
|
||||
|
||||
def make_inherit(cl, parent, attr):
|
||||
def make_caller(parent, name, attr):
|
||||
@@ -755,6 +929,12 @@ class ModulesIter(collections.Iterator):
|
||||
CModules.__iter__ = lambda cmod: ModulesIter(CModulesIter(cmod))
|
||||
|
||||
|
||||
# e.g. msg.As(znc.CNumericMessage)
|
||||
def _CMessage_As(self, cl):
|
||||
return getattr(self, 'As_' + cl.__name__, lambda: self)()
|
||||
CMessage.As = _CMessage_As
|
||||
|
||||
|
||||
def str_eq(self, other):
|
||||
if str(other) == str(self):
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user