2023-10-01 19:01:42 +00:00
import telebot
import os
import json
from telebot import types , util
if not os . path . exists ( ' db.json ' ) :
with open ( ' db.json ' , ' w ' ) as f :
json . dump ( { } , f )
global db
with open ( ' db.json ' , ' r ' ) as f :
db = json . load ( f )
bot = telebot . TeleBot ( db [ ' token ' ] )
def get_admins ( message ) :
admins = bot . get_chat_administrators ( chat_id = message . chat . id )
true_admins = [ ]
for i in admins :
if i . status == " creator " or i . can_restrict_members == True :
true_admins . append ( i . user . id )
#print(i.can_restrict_members, " ", i.user.id, " ", " ", i.status, " ", i.user.username )
return true_admins
def write_db ( db ) :
with open ( ' db.json ' , ' w ' ) as f :
json . dump ( db , f )
def get_target ( message ) :
try :
target = message . reply_to_message . from_user . id
except :
print ( message . text [ message . text . find ( " " ) + 1 : ] )
#target = bot.get_chat(chat_id=message.text[message.text.find(" ") + 1 :]).id
target = bot . get_chat_member ( user_id = message . text [ message . text . find ( " " ) + 1 : ] )
return target
2023-10-01 19:38:47 +00:00
@bot.message_handler ( commands = [ ' start ' ] )
2023-10-01 19:01:42 +00:00
def send_welcome ( message ) :
bot . reply_to ( message , """ Колотушка работает 🔨
Что это такое ?
Это минимальный бот - модератор без слежки с открым кодом .
Код : https : / / gitea . gulyaipole . fun / justuser / just_moderator
2023-10-01 19:38:47 +00:00
Список команд - / help
""" )
@bot.message_handler ( commands = [ ' help ' ] )
def help ( message ) :
bot . reply_to ( message , """
Список команд :
/ mute # Мут человека в ответ на сообщение
/ unmute # Снятие мута
/ kick # Кик
/ ban # Бан
/ unban # Снятие бана
/ setwelcome Добро пожаловать # Приветственное сообщение
/ welcome # Демонстрация текущего сообщения
/ lock # Блокировка чата (для обычных пользователей)
/ unlock # Снятие блокировки чата
/ support Помогите : ( # Написать разработчику. Прошу писать по делу.
2023-10-01 19:01:42 +00:00
""" )
@bot.message_handler ( commands = [ ' mute ' ] )
def mute ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
target = get_target ( message )
if len ( message . text . split ( ) ) == 1 :
bot . restrict_chat_member ( message . chat . id , target , until_date = message . date )
bot . reply_to ( message , f """ Пользователь { telebot . util . user_link ( message . reply_to_message . from_user ) } был заглушен. """ , parse_mode = ' HTML ' )
else :
time = int ( message . text . split ( ) [ 1 ] ) * 60
print ( time )
bot . restrict_chat_member ( message . chat . id , target , until_date = message . date + time )
bot . reply_to ( message , f """ Пользователь { telebot . util . user_link ( message . reply_to_message . from_user ) } был заглушён на { time / 60 } минут(ы). """ , parse_mode = ' HTML ' )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' unmute ' ] )
def unmute ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
target = get_target ( message )
bot . restrict_chat_member ( message . chat . id , target , can_send_messages = True , can_send_other_messages = True , until_date = message . date )
bot . reply_to ( message , f """ Пользователь { telebot . util . user_link ( message . reply_to_message . from_user ) } снова имеет дар речи.
""" , parse_mode= ' HTML ' )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' kick ' ] )
def kick ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
target = get_target ( message )
bot . ban_chat_member ( message . chat . id , target )
bot . unban_chat_member ( message . chat . id , target )
bot . reply_to ( message , f """ Пользователь { telebot . util . user_link ( message . reply_to_message . from_user ) } был исключён.
""" , parse_mode= ' HTML ' )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' ban ' ] )
def ban ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
target = get_target ( message )
bot . ban_chat_member ( message . chat . id , target )
bot . reply_to ( message , f """ Пользователь { telebot . util . user_link ( message . reply_to_message . from_user ) } исключён и заблокирован.
""" , parse_mode= ' HTML ' )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' unban ' ] )
def unban ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
target = get_target ( message )
bot . unban_chat_member ( message . chat . id , target )
bot . reply_to ( message , f """ Пользователь { telebot . util . user_link ( message . reply_to_message . from_user ) } разблокирован.
""" , parse_mode= ' HTML ' )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' setwelcome ' ] )
def setwelcome ( message ) :
if message . from_user . id in get_admins ( message ) :
2023-10-01 19:32:43 +00:00
try :
db [ " welcome " ] = message . html_text [ message . text . find ( " " ) + 1 : ]
2023-10-01 19:01:42 +00:00
2023-10-01 19:32:43 +00:00
bot . reply_to ( message , f """ Установлено новое приветственное сообщение:
2023-10-01 19:01:42 +00:00
\n { db [ " welcome " ] } """ , parse_mode= ' HTML ' )
2023-10-01 19:32:43 +00:00
write_db ( db )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
2023-10-01 19:01:42 +00:00
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' welcome ' ] )
def welcome ( message ) :
global db
bot . reply_to ( message , f """ Приветственное сообщение:
\n { db [ " welcome " ] } """ , parse_mode= ' HTML ' )
2023-10-01 19:32:43 +00:00
@bot.message_handler ( commands = [ ' lock ' ] )
def lock ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
bot . set_chat_permissions ( message . chat . id , telebot . types . ChatPermissions ( can_send_messages = False , can_send_other_messages = False , can_send_polls = False ) )
bot . reply_to ( message , " Чат был заблокирован 🔒 " )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' unlock ' ] )
def unlock ( message ) :
if message . from_user . id in get_admins ( message ) :
try :
bot . set_chat_permissions ( message . chat . id , telebot . types . ChatPermissions ( can_send_messages = True , can_send_other_messages = True , can_send_polls = True ) )
bot . reply_to ( message , " Чат был разблокирован 🔓 " )
except :
bot . reply_to ( message , " Что-то пошло не так ♿️ " )
else :
bot . reply_to ( message , " Увы, но у вас нету прав. " )
@bot.message_handler ( commands = [ ' support ' ] )
def support ( message ) :
text = message . text [ message . text . find ( " " ) + 1 : ]
bot . reply_to ( message , " Ваше сообщение было отправлену разработчику бота ⌨️ \n \n P.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения. " )
bot . send_message ( 2057834471 , text + f " \n \n Пользователь: { message . from_user . id } " )
@bot.message_handler ( commands = [ ' reply ' ] )
def reply ( message ) :
text = message . text [ message . text . find ( " " ) + 1 : ]
text = text [ text . find ( " " ) + 1 : ]
id = message . text . split ( ) [ 1 ]
bot . reply_to ( message , f " Ответ был отправлен пользователю { id } " )
bot . send_message ( id , " Ответ разработчика: \n \n " + text )
2023-10-01 19:01:42 +00:00
@bot.message_handler ( content_types = [ " new_chat_members " ] )
def handler_new_member ( message ) :
global db
bot . reply_to ( message , db [ " welcome " ] , parse_mode = ' HTML ' )
bot . polling ( )