You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

244 lines
8.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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):
try:
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
except:
bot.reply_to(message, "Крит.Ошибка: НЕВОЗМОЖНО ПОЛУЧИТЬ СПИСОК АДМИНИСТРАТОРОВ")
return None
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
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, """Колотушка работает 🔨
Что это такое?
Это минимальный бот-модератор без слежки с открым кодом.
Код: https://gitea.gulyaipole.fun/justuser/just_moderator
Список команд - /help
""")
@bot.message_handler(commands=['help'])
def help(message):
bot.reply_to(message, """
Список команд:
/mute # Мут человека в ответ на сообщение
/unmute # Снятие мута
/kick # Кик
/ban # Бан
/unban # Снятие бана
/setwelcome Добро пожаловать # Приветственное сообщение
/welcome # Демонстрация текущего сообщения
/lock # Блокировка чата (для обычных пользователей)
/unlock # Снятие блокировки чата
/support Помогите :( # Написать разработчику. Прошу писать по делу.
""")
@bot.message_handler(commands=['mute'])
def mute(message):
try:
if message.from_user.id in get_admins(message):
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')
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['unmute'])
def unmute(message):
try:
if message.from_user.id in get_admins(message):
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')
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['kick'])
def kick(message):
try:
if message.from_user.id in get_admins(message):
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')
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['ban'])
def ban(message):
try:
if message.from_user.id in get_admins(message):
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')
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['unban'])
def unban(message):
try:
if message.from_user.id in get_admins(message):
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')
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['setwelcome'])
def setwelcome(message):
try:
if message.from_user.id in get_admins(message):
db[str(message.chat.id)] = message.html_text[ message.text.find(" ") + 1 :]
bot.reply_to(message, f"""Установлено новое приветственное сообщение:
\n{db[str(message.chat.id)]}""", parse_mode='HTML')
write_db(db)
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['welcome'])
def welcome(message):
try:
global db
bot.reply_to(message, f"""Приветственное сообщение:
\n{db[str(message.chat.id)]}""", parse_mode='HTML')
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['lock'])
def lock(message):
try:
if message.from_user.id in get_admins(message):
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, "Чат был заблокирован 🔒")
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['unlock'])
def unlock(message):
try:
if message.from_user.id in get_admins(message):
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, "Чат был разблокирован 🔓")
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['support'])
def support(message):
try:
text = message.text[message.text.find(" ") + 1 :]
bot.reply_to(message, "Ваше сообщение было отправлену разработчику бота ⌨️\n\nP.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения.")
bot.send_message(2057834471, text + f"\n\nПользователь: {message.from_user.id}")
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
@bot.message_handler(commands=['reply'])
def reply(message):
if message.chat.id == 2057834471:
try:
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)
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
@bot.message_handler(content_types=["new_chat_members"])
def handler_new_member(message):
try:
global db
bot.reply_to(message, db["welcome"], parse_mode='HTML')
except:
pass
bot.polling()