-
Notifications
You must be signed in to change notification settings - Fork 0
Madokaのログ記録の流れ
Kosuke Yamashita edited this page Aug 22, 2021
·
5 revisions
plugin/server/種類.mpi
に処理が書かれており、メッセージの種類に合わせた処理が実行される。その際に以下を呼ぶ。
&mes(メッセージ, $chanr);
madoka.pl
の662行。
sub mes {
# 引数
my($mes, $chan) = @_;
# 改行コードを消す
$mes =~ s/\r*\n$//;
# メッセージをキャッシュに残す
if ($yr_cache && $chan ne 'D') {
push(@cache_mes, $mes);
shift(@cache_mes) if $#cache_mes > $yr_cache;
}
# ログ記録対象チャンネルならばログに残す
&Log("$mes\n", $chan || 'ALL') if &list_exist($plugin_list, 'log');
}
# madoka.pl L156
$chl_header = '\#\&\+\!\%';
if ($chanr =~ /^[$chl_header]/) {
if (&list_exist($ls_mem{$chanr}, $from, "\+$from", "\@$from") &&
&list_exist($chl, $chanr)) {
&mes("<$chanv:$from> $mesl\n", $chanr);
} else {
&mes("($chanv:$from) $mesl\n", $chanr);
}
} else {
&mes("=$from= $mesl\n", 'P');
}
判定条件がPRIVMSGと同じだから、区別できないかもしれない。
if ($chanr =~ /^[\#\&\+\!]/) {
if (&list_exist($ls_mem{$chanr}, $from, "\+$from", "\@$from")) {
&mes("<$chanv:$from> $mes\n", $chanr);
} else {
&mes("($chanv:$from) $mes\n", $chanr);
}
} else {
&mes("=$from= $mes\n", 'P');
}
&mes("Topic of channel $chanv by $from: $topicl\n", $chanr);
if ($wm) {
# ...
&mes("+ $from($where) to $chanv with +$wm\n", $chanr);
# ...
} else {
# ...
&mes("+ $from($where) to $chanv\n", $chanr);
# ...
}
&mes("- $from from $chanv ($partl)\n", $chanr);
if (!$mes) {
&mes("! $from\n", 'ALL');
} else {
&mes("! $from ($quitl)\n", 'ALL');
}
&mes("- $who by $from from $chanv ($kickl)\n", $chanr);
if ($from eq $us_nick) {
&mes("[!] nick changed ($from -> $nick)\n", 'ALL');
# ...
} else {
&mes("$from -> $nick\n", 'ALL');
}
&mes("[!] auto down\n", 'ALL');