From de2106b16b12436cc0ed0b309154e898bc00156b Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 6 Mar 2022 00:08:34 +0300 Subject: [PATCH] Add !admin greet command --- lib/BotLib.pm | 20 +++++++++- lib/BotLib/Admin.pm | 96 ++++++++++++++++++++++++++++++++++++++++++++- lib/TelegramBot.pm | 7 +++- 3 files changed, 118 insertions(+), 5 deletions(-) diff --git a/lib/BotLib.pm b/lib/BotLib.pm index 073ffbd..08711ad 100644 --- a/lib/BotLib.pm +++ b/lib/BotLib.pm @@ -15,10 +15,11 @@ use Data::Dumper qw (Dumper); use BotLib::Conf qw (LoadConf); use BotLib::Admin qw (@ForbiddenMessageTypes GetForbiddenTypes AddForbiddenType DelForbiddenType ListForbidden FortuneToggle FortuneStatus - PluginToggle PluginStatus PluginEnabled ChanMsgToggle ChanMsgStatus); + PluginToggle PluginStatus PluginEnabled ChanMsgToggle ChanMsgStatus + GreetMsgToggle GreetMsgStatus); use BotLib::Util qw (trim); -use version; our $VERSION = qw (1.0); +use version; our $VERSION = qw (1.1); use Exporter qw (import); our @EXPORT_OK = qw (Command Highlight BotSleep IsCensored); @@ -197,6 +198,10 @@ ${csign}admin fortune # - где 1 - вкл, 0 - выкл фортунку ${csign}admin фортунка # - где 1 - вкл, 0 - выкл фортунку с утра ${csign}admin fortune - показываем ли с утра фортунку для чата ${csign}admin фортунка - показываем ли с утра фортунку для чата +${csign}admin greet # - где 1 - вкл, 0 - выкл приветствия новых участников чата +${csign}admin приветствие # - где 1 - вкл, 0 - выкл приветствия новых участников чата +${csign}admin greet - приветствуем ли новых участников чата +${csign}admin приветствие - приветствуем ли новых участников чата ${csign}admin oboobs # - где 1 - вкл, 0 - выкл плагина oboobs ${csign}admin oboobs - показываем ли сисечки по просьбе участников чата (команды ${csign}tits, ${csign}tities, ${csign}boobs, ${csign}boobies, ${csign}сиси, ${csign}сисечки) ${csign}admin obutts # - где 1 - вкл, 0 - выкл плагина obutts @@ -272,6 +277,17 @@ MYADMIN } else { $reply = ChanMsgStatus ($chatid); } + # Приветствуем ли мы новых участников чата + } elsif ($cmd eq 'greet' || $cmd eq 'приветствие') { + if (defined $args) { + if ($args == 1) { + $reply = GreetMsgToggle ($chatid, 1); + } elsif ($args == 0) { + $reply = GreetMsgToggle ($chatid, 0); + } + } else { + $reply = GreetMsgStatus ($chatid); + } # Работает ли плагин oboobs в чатике } elsif ($cmd eq 'oboobs') { if (defined $args) { diff --git a/lib/BotLib/Admin.pm b/lib/BotLib/Admin.pm index f84d5db..f419e58 100644 --- a/lib/BotLib/Admin.pm +++ b/lib/BotLib/Admin.pm @@ -11,13 +11,14 @@ use CHI::Driver::BerkeleyDB (); use BotLib::Conf qw (LoadConf); use BotLib::Util qw (utf2sha1); -use version; our $VERSION = qw (1.0); +use version; our $VERSION = qw (1.1); use Exporter qw (import); # to export array we need @ISA here our @ISA = qw / Exporter /; ## no critic (ClassHierarchies::ProhibitExplicitISA) our @EXPORT_OK = qw (@ForbiddenMessageTypes @PluginList GetForbiddenTypes AddForbiddenType DelForbiddenType ListForbidden FortuneToggle FortuneToggleList FortuneStatus PluginToggle PluginStatus - PluginEnabled ChanMsgToggle ChanMsgStatus ChanMsgEnabled); + PluginEnabled ChanMsgToggle ChanMsgStatus ChanMsgEnabled GreetMsgToggle GreetMsgStatus + GreetMsgEnabled); my $c = LoadConf (); my $cachedir = $c->{cachedir}; @@ -276,6 +277,97 @@ sub ChanMsgToggleList () { return $cache->get_keys (); } +sub GreetMsgToggle (@) { + my $chatid = shift; + my $action = shift // undef; + my $phrase = 'Приветствия новых участников чата '; + + my $cache = CHI->new ( + driver => 'BerkeleyDB', + root_dir => $cachedir, + namespace => __PACKAGE__ . '_' . 'greet_msg', + ); + + my $state = $cache->get ($chatid); + + if (defined $action) { + if ($action) { + $cache->set ($chatid, 1, 'never'); + $phrase .= 'включены.'; + } else { + if (defined $state && $state) { + $cache->set ($chatid, 0, 'never'); + $phrase .= 'выключены.'; + } else { + $cache->set ($chatid, 1, 'never'); + $phrase .= 'включены.'; + } + } + } else { + if (defined $state){ + if ($state) { + $cache->set ($chatid, 0, 'never'); + $phrase .= 'выключены.'; + } else { + $cache->set ($chatid, 1, 'never'); + $phrase .= 'включены.'; + } + } else { + $cache->set ($chatid, 1, 'never'); + $phrase .= 'выключены.'; + } + } + + return $phrase; +} + +sub GreetMsgStatus ($) { + my $chatid = shift; + my $phrase = 'Приветствия новых участников чата '; + + my $cache = CHI->new ( + driver => 'BerkeleyDB', + root_dir => $cachedir, + namespace => __PACKAGE__ . '_' . 'greet_msg', + ); + + my $state = $cache->get ($chatid); + + if (defined $state) { + if ($state) { + $phrase .= 'включены.'; + } else { + $phrase .= 'выключены.'; + } + } else { + $phrase .= 'включены.'; + } + + return $phrase; +} + +sub GreetMsgEnabled ($) { + my $chatid = shift; + + my $cache = CHI->new ( + driver => 'BerkeleyDB', + root_dir => $cachedir, + namespace => __PACKAGE__ . '_' . 'greet_msg', + ); + + my $state = $cache->get ($chatid); + + if (defined $state) { + if ($state) { + return 1; + } else { + return 0; + } + } else { + return 1; + } +} + sub PluginStatus (@) { my $chatid = shift; my $plugin = shift; diff --git a/lib/TelegramBot.pm b/lib/TelegramBot.pm index 3374950..9f0814b 100644 --- a/lib/TelegramBot.pm +++ b/lib/TelegramBot.pm @@ -12,7 +12,7 @@ use Log::Any qw ($log); use Math::Random::Secure qw (irand); use Mojo::Base 'Teapot::Bot::Brain'; -use BotLib::Admin qw (FortuneToggleList ChanMsgEnabled); +use BotLib::Admin qw (FortuneToggleList ChanMsgEnabled GreetMsgEnabled); use BotLib qw (Command Highlight BotSleep IsCensored); use BotLib::Conf qw (LoadConf); use BotLib::Util qw (trim fmatch); @@ -127,6 +127,11 @@ sub __on_msg { # Newcommer event, greet our new member and suggest to introduce themself. if ($msg->can ('new_chat_members') && defined ($msg->new_chat_members)) { + + unless (GreetMsgEnabled ($chatid)) { + return; + } + my @members; my @introduce = ( 'Дратути',