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.

162 lines
5.5 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):
db["welcome"] = message.html_text[ message.text.find(" ") + 1 :]
bot.reply_to(message, f"""Установлено новое приветственное сообщение:
\n{db["welcome"]}""", parse_mode='HTML')
write_db(db)
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')
@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()