Чат-Антифлуд

Материал из wiki-MyMakerBot

↩️ Назад

Реакция в чате

Данная команда реагирует на повторяющиеся сообщения пользователей

Размещение в конструкторе

Контроллер: group_msg

Экшн: flood

Исходный код

{db_form name='chat_flood' idx=$group_chat_id}

{* INIT *}
{if (
	(!isset($chat_flood['last_user']) || $chat_flood['last_user'] !== $user_id) || 
	(isset($chat_flood['last_user']) && $chat_flood['last_user'] !== $user_id)  || 
	(isset($chat_flood['last_user']) && $chat_flood['last_user'] == $user_id && $chat_flood['time'] < time()-15) 
)}
	{db_save name='chat_flood' idx=$group_chat_id data=['group_chat_id'=>$group_chat_id, 'last_user'=>$user_id, 'cnt'=>1, 'time'=>time()]}
	{db_form name='chat_flood' idx=$group_chat_id}
{/if}

{* FLOOD *}
{if (isset($chat_flood['last_user']) && $chat_flood['last_user'] == $user_id && $chat_flood['time'] > time()-15  && mb_strlen($text, 'utf-8') < 20)}
	{if ($chat_flood.cnt<4)}
        {if ($chat_flood.cnt>2)}
        	{tg_sendMessage text="@`$user.username`, Астанавись!" reply_to_message_id=$message_id die=10}
		{/if}
      	{$chat_flood.cnt = $chat_flood.cnt+1}
      	{$chat_flood.time = time()}
		{db_save name='chat_flood' idx=$group_chat_id data=$chat_flood}
    {else}
    	{tg_deleteMessage}
    {/if}
{/if}