Fix acces for anon admins.

main
t 1 year ago
parent 9c8ed51dbf
commit 42b3e13151

131
mod.py

@ -4,7 +4,7 @@ import json
from telebot import types,util from telebot import types,util
global db, users global db, users, blocks
####### CREATE DB IF NOT EXIST ####### CREATE DB IF NOT EXIST
@ -24,6 +24,12 @@ if not os.path.exists('users.json'):
outfile.write(js) outfile.write(js)
if not os.path.exists('blocks.json'):
blocks = []
js = json.dumps(blocks, indent=2)
with open("blocks.json", "w") as outfile:
outfile.write(js)
############WORK WITH DBs########## ############WORK WITH DBs##########
def read_db(): def read_db():
@ -48,6 +54,17 @@ def write_users():
outfile.write(js) outfile.write(js)
def read_blocks():
global blocks
with open('blocks.json', 'r') as openfile:
blocks = json.load(openfile)
def write_blocks():
global blocks
js = json.dumps(blocks, indent=2)
with open("blocks.json", "w") as outfile:
outfile.write(js)
####################FAST HASH################# ####################FAST HASH#################
from xxhash import xxh32 from xxhash import xxh32
@ -73,6 +90,12 @@ def get_admins(message):
catch_error(message) catch_error(message)
return None return None
# Fix for anon admins, all anon (not premium) users == admins
def is_anon(message):
if message.from_user.username == "Channel_Bot" and message.from_user.is_premium == None:
return True
else:
return False
def get_target(message): def get_target(message):
try: try:
@ -116,6 +139,7 @@ def key_by_value(dictionary, key):
def analytic(message): def analytic(message):
global users global users
read_users()
if key_by_value(users, message.from_user.id) == message.from_user.username: if key_by_value(users, message.from_user.id) == message.from_user.username:
pass pass
@ -133,7 +157,6 @@ read_db()
read_users() read_users()
bot = telebot.TeleBot(db['token']) bot = telebot.TeleBot(db['token'])
##################COMMANDS####### ##################COMMANDS#######
@bot.message_handler(commands=['start', 'faq']) @bot.message_handler(commands=['start', 'faq'])
@ -152,23 +175,27 @@ def help(message):
bot.reply_to(message, """ bot.reply_to(message, """
Список команд: Список команд:
/mute # Мут человека в ответ на сообщение /mute Мут человека в ответ на сообщение
/unmute # Снятие мута /unmute Снятие мута
/kick # Кик /kick Кик
/ban # Бан /ban Бан
/unban # Снятие бана /unban Снятие бана
/setwelcome Добро пожаловать # Приветственное сообщение /setwelcome Приветственное сообщение
/welcome # Демонстрация текущего сообщения /welcome Демонстрация текущего сообщения
/lock # Блокировка чата (для обычных пользователей) /lock Блокировка чата (для обычных пользователей)
/unlock # Снятие блокировки чата /unlock Снятие блокировки чата
/chatid Айди чата
/support Помогите :( # Написать разработчику. Прошу писать по делу.
/secret Функция для получения ссылки html на пользователя в лс.
/html <code> Отправка текста сообщения в режиме формата html.
/support Помогите :( Написать разработчику. Прошу писать по делу.
""") """)
@bot.message_handler(commands=['mute']) @bot.message_handler(commands=['mute'])
def mute(message): def mute(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
target = get_target(message) target = get_target(message)
if target: if target:
if len(message.text.split()) == 1: if len(message.text.split()) == 1:
@ -192,7 +219,7 @@ def mute(message):
@bot.message_handler(commands=['unmute']) @bot.message_handler(commands=['unmute'])
def unmute(message): def unmute(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
target = get_target(message) target = get_target(message)
if target: if target:
bot.restrict_chat_member(message.chat.id, target, can_send_messages=True, can_send_other_messages = True, until_date = message.date) bot.restrict_chat_member(message.chat.id, target, can_send_messages=True, can_send_other_messages = True, until_date = message.date)
@ -209,7 +236,7 @@ def unmute(message):
@bot.message_handler(commands=['kick']) @bot.message_handler(commands=['kick'])
def kick(message): def kick(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
target = get_target(message) target = get_target(message)
if target: if target:
bot.ban_chat_member(message.chat.id, target) bot.ban_chat_member(message.chat.id, target)
@ -228,7 +255,7 @@ def kick(message):
@bot.message_handler(commands=['ban']) @bot.message_handler(commands=['ban'])
def ban(message): def ban(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
target = get_target(message) target = get_target(message)
if target: if target:
bot.ban_chat_member(message.chat.id, target) bot.ban_chat_member(message.chat.id, target)
@ -244,7 +271,7 @@ def ban(message):
@bot.message_handler(commands=['unban']) @bot.message_handler(commands=['unban'])
def unban(message): def unban(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
target = get_target(message) target = get_target(message)
if target: if target:
bot.unban_chat_member(message.chat.id, target) bot.unban_chat_member(message.chat.id, target)
@ -260,7 +287,7 @@ def unban(message):
@bot.message_handler(commands=['setwelcome']) @bot.message_handler(commands=['setwelcome'])
def setwelcome(message): def setwelcome(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
global db global db
db[str(message.chat.id)] = message.html_text[ message.text.find(" ") + 1 :] db[str(message.chat.id)] = message.html_text[ message.text.find(" ") + 1 :]
@ -285,7 +312,7 @@ def welcome(message):
@bot.message_handler(commands=['lock']) @bot.message_handler(commands=['lock'])
def lock(message): def lock(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(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.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, "Чат был заблокирован 🔒") bot.reply_to(message, "Чат был заблокирован 🔒")
else: else:
@ -296,7 +323,7 @@ def lock(message):
@bot.message_handler(commands=['unlock']) @bot.message_handler(commands=['unlock'])
def unlock(message): def unlock(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(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.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, "Чат был разблокирован 🔓") bot.reply_to(message, "Чат был разблокирован 🔓")
else: else:
@ -307,7 +334,7 @@ def unlock(message):
@bot.message_handler(commands=['id']) @bot.message_handler(commands=['id'])
def getid(message): def getid(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
bot.reply_to(message, "ID: " + telebot.formatting.hcode(str(get_target(message))), parse_mode="HTML" ) bot.reply_to(message, "ID: " + telebot.formatting.hcode(str(get_target(message))), parse_mode="HTML" )
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
@ -319,7 +346,7 @@ def getid(message):
@bot.message_handler(commands=['secret']) @bot.message_handler(commands=['secret'])
def secret(message): def secret(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message) or is_anon(message):
bot.send_message(message.from_user.id, telebot.util.user_link(message.reply_to_message.from_user)) bot.send_message(message.from_user.id, telebot.util.user_link(message.reply_to_message.from_user))
bot.delete_message(message.chat.id, message.id) bot.delete_message(message.chat.id, message.id)
else: else:
@ -336,16 +363,46 @@ def html(message):
except: except:
catch_error(message) catch_error(message)
@bot.message_handler(commands=['chatid'])
def chatid(message):
try:
if message.from_user.id in get_admins(message) or is_anon(message):
bot.reply_to(message, "Айди чата: " + telebot.formatting.hcode( str(message.chat.id) ), parse_mode='HTML')
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
catch_error(message)
######################SUPPORT######## ######################SUPPORT########
@bot.message_handler(commands=['support']) @bot.message_handler(commands=['support'])
def support(message): def support(message):
try: try:
global blocks
read_blocks()
if message.chat.id not in blocks:
text = message.text[message.text.find(" ") + 1 :] text = message.text[message.text.find(" ") + 1 :]
bot.reply_to(message, "Ваше сообщение было отправлену разработчику бота ⌨️\n\nP.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения.") bot.reply_to(message, "Ваше сообщение было отправлену разработчику бота ⌨️\n\nP.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения.")
bot.send_message(2057834471, text + f"\n\nПользователь: {message.from_user.id}") bot.send_message(2057834471, text + f"\n\nПользователь: {message.from_user.id}")
else:
bot.reply_to(message, "Увы, но вы заблокированы")
except:
catch_error(message)
@bot.message_handler(commands=['block'])
def block(message):
try:
if message.chat.id == 2057834471:
global blocks
read_blocks()
id = int(message.text.split()[1] )
blocks.append(id)
write_blocks()
bot.reply_to(message, "Пользователь заблокирован.")
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
catch_error(message) catch_error(message)
@bot.message_handler(commands=['reply']) @bot.message_handler(commands=['reply'])
@ -377,12 +434,36 @@ def handler_new_member(message):
##############ANALYTIC######## ##############ANALYTIC########
@bot.message_handler(func=lambda message: True) @bot.message_handler()
def catch_all_messages(message): def catch_all_messages(message):
analytic(message) analytic(message)
# BLOCK LINKS FOR GULYAIPOLE (INDIVIDUAL, SECRET)
try:
if message.chat.id == -1001766918049 and message.from_user.id not in get_admins(message):
if 'https://t.me/' in message.text or ( hasattr(message, 'entities') and hasattr(message.entities[0], 'url') and message.entities[0].url != None ):
bot.delete_message(message.chat.id, message.id)
bot.send_message(message.chat.id, f"Пользователь {telebot.util.user_link(message.from_user)} пытался отправить ссылку на группу/чат.", parse_mode='HTML')
except:
#catch_error(message)
pass
@bot.edited_message_handler()
def catch_edited_messages(message):
try:
if message.chat.id == -1001766918049 and message.from_user.id not in get_admins(message):
if 'https://t.me/' in message.text or ( hasattr(message, 'entities') and hasattr(message.entities[0], 'url') and message.entities[0].url != None ):
bot.delete_message(message.chat.id, message.id)
bot.send_message(message.chat.id, f"Пользователь {telebot.util.user_link(message.from_user)} пытался отправить ссылку на группу/чат.", parse_mode='HTML')
except:
#catch_error(message)
pass
# For what? # For what?
# This add users = {} # This add users to db for using command like:
# /ban @username
# Without reply to message. All usernames hashed.
##################CATCH ERRORS#### ##################CATCH ERRORS####

Loading…
Cancel
Save