Fix some bugs, add xxhash for usernames

main
t 1 year ago
parent 9966167dd5
commit 9c8ed51dbf

@ -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,6 +76,15 @@ def get_admins(message):
def get_target(message):
try:
# 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:
target = message.reply_to_message.from_user.id
if target not in get_admins(message):
return target
@ -76,6 +93,21 @@ def get_target(message):
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…
Cancel
Save