Fix some bugs, add xxhash for usernames
This commit is contained in:
parent
9966167dd5
commit
9c8ed51dbf
93
mod.py
93
mod.py
@ -48,6 +48,14 @@ def write_users():
|
||||
outfile.write(js)
|
||||
|
||||
|
||||
####################FAST HASH#################
|
||||
from xxhash import xxh32
|
||||
|
||||
# Generate fast hash
|
||||
def sha(text):
|
||||
text = str(text)
|
||||
return xxh32(text).hexdigest()
|
||||
|
||||
##################FUNCTIONS########
|
||||
|
||||
def get_admins(message):
|
||||
@ -68,14 +76,38 @@ def get_admins(message):
|
||||
|
||||
def get_target(message):
|
||||
try:
|
||||
target = message.reply_to_message.from_user.id
|
||||
if target not in get_admins(message):
|
||||
return target
|
||||
# if True:
|
||||
if len(message.text.split()) > 1 and message.text.split()[1][0] == "@":
|
||||
username = message.text.split()[1][1:]
|
||||
global users
|
||||
if sha(username) in users:
|
||||
return users[sha(username)]
|
||||
else:
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
target = message.reply_to_message.from_user.id
|
||||
if target not in get_admins(message):
|
||||
return target
|
||||
else:
|
||||
return None
|
||||
except:
|
||||
return None
|
||||
|
||||
def get_name(message):
|
||||
try:
|
||||
text = message.text.split()
|
||||
|
||||
# If message with @username
|
||||
if len(text) > 1 and text[1][0] == '@':
|
||||
return text[1]
|
||||
# Reply to message
|
||||
else:
|
||||
return telebot.util.user_link(message.reply_to_message.from_user)
|
||||
except:
|
||||
catch_error(message)
|
||||
|
||||
#return telebot.util.user_link(message.reply_to_message.from_user)
|
||||
|
||||
def key_by_value(dictionary, key):
|
||||
for i in dictionary:
|
||||
if dictionary[i] == key:
|
||||
@ -85,14 +117,12 @@ def key_by_value(dictionary, key):
|
||||
def analytic(message):
|
||||
global users
|
||||
|
||||
# print(message.from_user.username)
|
||||
|
||||
if key_by_value(users, message.from_user.id) == message.from_user.username:
|
||||
print(11111)
|
||||
pass
|
||||
elif message.from_user.username == "None":
|
||||
print(22222)
|
||||
pass
|
||||
else:
|
||||
users[message.from_user.username] = message.from_user.id
|
||||
users[sha(message.from_user.username)] = message.from_user.id
|
||||
write_users()
|
||||
|
||||
|
||||
@ -100,6 +130,7 @@ def analytic(message):
|
||||
|
||||
|
||||
read_db()
|
||||
read_users()
|
||||
bot = telebot.TeleBot(db['token'])
|
||||
|
||||
|
||||
@ -142,11 +173,14 @@ def mute(message):
|
||||
if target:
|
||||
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')
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } был заглушен.""", parse_mode='HTML')
|
||||
elif len(message.text.split()) == 2 and message.text.split()[1][0] == "@":
|
||||
bot.restrict_chat_member(message.chat.id, target, until_date = message.date)
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } был заглушен.""")
|
||||
else:
|
||||
time = int(message.text.split()[1]) * 60
|
||||
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')
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } был заглушён на {time/60} минут(ы).""", parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, "no_user")
|
||||
else:
|
||||
@ -162,7 +196,7 @@ def unmute(message):
|
||||
target = get_target(message)
|
||||
if target:
|
||||
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) } снова имеет дар речи.
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } снова имеет дар речи.
|
||||
""", parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, "no_user")
|
||||
@ -181,7 +215,7 @@ def kick(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) } был исключён.
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } был исключён.
|
||||
""", parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, "no_user")
|
||||
@ -198,7 +232,7 @@ def ban(message):
|
||||
target = get_target(message)
|
||||
if target:
|
||||
bot.ban_chat_member(message.chat.id, target)
|
||||
bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } исключён и заблокирован.
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } исключён и заблокирован.
|
||||
""", parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, "no_user")
|
||||
@ -214,7 +248,7 @@ def unban(message):
|
||||
target = get_target(message)
|
||||
if target:
|
||||
bot.unban_chat_member(message.chat.id, target)
|
||||
bot.reply_to(message, f"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } разблокирован.
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } разблокирован.
|
||||
""", parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, "no_user")
|
||||
@ -282,6 +316,27 @@ def getid(message):
|
||||
|
||||
|
||||
|
||||
@bot.message_handler(commands=['secret'])
|
||||
def secret(message):
|
||||
try:
|
||||
if message.from_user.id in get_admins(message):
|
||||
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)
|
||||
else:
|
||||
bot.reply_to(message, "Увы, но у вас нету прав.")
|
||||
except:
|
||||
catch_error(message)
|
||||
|
||||
@bot.message_handler(commands=['html'])
|
||||
def html(message):
|
||||
try:
|
||||
text = ' '.join( message.text.split()[1:] )
|
||||
bot.send_message(message.chat.id , text, parse_mode='HTML')
|
||||
bot.delete_message(message.chat.id, message.id)
|
||||
except:
|
||||
catch_error(message)
|
||||
|
||||
|
||||
######################SUPPORT########
|
||||
|
||||
@bot.message_handler(commands=['support'])
|
||||
@ -324,11 +379,7 @@ def handler_new_member(message):
|
||||
|
||||
@bot.message_handler(func=lambda message: True)
|
||||
def catch_all_messages(message):
|
||||
#analytic(message)
|
||||
global users
|
||||
print("I see")
|
||||
print(key_by_value(users, message.from_user.id))
|
||||
print("I don't see")
|
||||
analytic(message)
|
||||
|
||||
# For what?
|
||||
# This add users = {}
|
||||
@ -353,7 +404,7 @@ def catch_error(message, err_type = None):
|
||||
logging.error(traceback.format_exc()) # Log error
|
||||
err = log_stream.getvalue() # Error to variable
|
||||
|
||||
bot.reply_to(message, "Critical error (свяжетись через /support сообщение ) :\n\n" + telebot.formatting.hcode(err), parse_mode='HTML')
|
||||
bot.reply_to(message, "Critical error (свяжитись через /support сообщение ) :\n\n" + telebot.formatting.hcode(err), parse_mode='HTML')
|
||||
|
||||
log_stream.truncate(0) # Clear
|
||||
log_stream.seek(0) # Clear
|
||||
|
Loading…
Reference in New Issue
Block a user