Fix acces for anon admins.
This commit is contained in:
parent
9c8ed51dbf
commit
42b3e13151
135
mod.py
135
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:
|
||||||
text = message.text[message.text.find(" ") + 1 :]
|
global blocks
|
||||||
|
read_blocks()
|
||||||
|
|
||||||
bot.reply_to(message, "Ваше сообщение было отправлену разработчику бота ⌨️\n\nP.S.: Чтобы получить ответ вы обязательно должны написать боту в личные сообщения.")
|
if message.chat.id not in blocks:
|
||||||
bot.send_message(2057834471, text + f"\n\nПользователь: {message.from_user.id}")
|
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}")
|
||||||
|
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…
Reference in New Issue
Block a user