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.

207 lines
7.4 KiB

1 year ago
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
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
bot.reply_to(message, """Колотушка работает 🔨
Что это такое?
Это минимальный бот-модератор без слежки с открым кодом.
Код: https://gitea.gulyaipole.fun/justuser/just_moderator
Список команд:
""")
@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):
1 year ago
try:
db["welcome"] = message.html_text[ message.text.find(" ") + 1 :]
1 year ago
1 year ago
bot.reply_to(message, f"""Установлено новое приветственное сообщение:
1 year ago
\n{db["welcome"]}""", parse_mode='HTML')
1 year ago
write_db(db)
except:
bot.reply_to(message, "Что-то пошло не так ♿️")
1 year ago
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')
1 year ago
@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\nP.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)
1 year ago
@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()