Beta-update

main
t 1 year ago
parent fba7fec741
commit 9966167dd5

256
mod.py

@ -4,48 +4,108 @@ import json
from telebot import types,util from telebot import types,util
global db, users
####### CREATE DB IF NOT EXIST
if not os.path.exists('db.json'): if not os.path.exists('db.json'):
with open('db.json', 'w') as f: db = {"token": "None"}
json.dump({}, f) js = json.dumps(db, indent=2)
with open("db.json", "w") as outfile:
outfile.write(js)
global db print('Input token in "None" (db.json)')
with open('db.json', 'r') as f: exit()
db = json.load(f)
bot = telebot.TeleBot(db['token']) if not os.path.exists('users.json'):
users = {}
js = json.dumps(users, indent=2)
with open("users.json", "w") as outfile:
outfile.write(js)
############WORK WITH DBs##########
def read_db():
global db
with open('db.json', 'r') as openfile:
db = json.load(openfile)
def write_db():
global db
js = json.dumps(db, indent=2)
with open("db.json", "w") as outfile:
outfile.write(js)
def read_users():
global users
with open('users.json', 'r') as openfile:
users = json.load(openfile)
def write_users():
global users
js = json.dumps(users, indent=2)
with open("users.json", "w") as outfile:
outfile.write(js)
##################FUNCTIONS########
def get_admins(message): def get_admins(message):
try: try:
admins = bot.get_chat_administrators(chat_id=message.chat.id) if bot.get_chat(message.chat.id).type == "private":
true_admins = [] return []
for i in admins: else:
if i.status == "creator" or i.can_restrict_members == True: admins = bot.get_chat_administrators(chat_id=message.chat.id)
true_admins.append(i.user.id) true_admins = []
#print(i.can_restrict_members, " ", i.user.id, " ", " ", i.status, " ", i.user.username ) for i in admins:
if i.status == "creator" or i.can_restrict_members == True:
true_admins.append(i.user.id)
return true_admins return true_admins
except: except:
bot.reply_to(message, "Крит.Ошибка: НЕВОЗМОЖНО ПОЛУЧИТЬ СПИСОК АДМИНИСТРАТОРОВ") catch_error(message)
return None return None
def write_db(db):
with open('db.json', 'w') as f:
json.dump(db, f)
def get_target(message): def get_target(message):
try: try:
target = message.reply_to_message.from_user.id target = message.reply_to_message.from_user.id
if target not in get_admins(message):
return target
else:
return None
except: except:
print(message.text[message.text.find(" ") + 1 :]) return None
#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 :]) def key_by_value(dictionary, key):
for i in dictionary:
if dictionary[i] == key:
return i
return None
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)
elif message.from_user.username == "None":
print(22222)
else:
users[message.from_user.username] = message.from_user.id
write_users()
#############TOKEN INIT#####
return target
read_db()
bot = telebot.TeleBot(db['token'])
##################COMMANDS#######
@bot.message_handler(commands=['start']) @bot.message_handler(commands=['start', 'faq'])
def send_welcome(message): def send_welcome(message):
bot.reply_to(message, """Колотушка работает 🔨 bot.reply_to(message, """Колотушка работает 🔨
@ -79,20 +139,20 @@ def mute(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message):
target = get_target(message) target = get_target(message)
if target:
if len(message.text.split()) == 1: if len(message.text.split()) == 1:
bot.restrict_chat_member(message.chat.id, target, until_date = message.date) 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"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } был заглушен.""", parse_mode='HTML')
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')
else: else:
time = int(message.text.split()[1]) * 60 catch_error(message, "no_user")
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')
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['unmute']) @bot.message_handler(commands=['unmute'])
@ -100,15 +160,16 @@ def unmute(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message):
target = get_target(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.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"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } снова имеет дар речи.
""", parse_mode='HTML') """, parse_mode='HTML')
else:
catch_error(message, "no_user")
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['kick']) @bot.message_handler(commands=['kick'])
@ -116,16 +177,18 @@ def kick(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message):
target = get_target(message) target = get_target(message)
if target:
bot.ban_chat_member(message.chat.id, target)
bot.unban_chat_member(message.chat.id, 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.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') """, parse_mode='HTML')
else:
catch_error(message, "no_user")
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['ban']) @bot.message_handler(commands=['ban'])
@ -133,51 +196,57 @@ def ban(message):
try: try:
if message.from_user.id in get_admins(message): if message.from_user.id in get_admins(message):
target = get_target(message) target = get_target(message)
if target:
bot.ban_chat_member(message.chat.id, 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"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } исключён и заблокирован.
""", parse_mode='HTML') """, parse_mode='HTML')
else:
catch_error(message, "no_user")
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(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):
target = get_target(message) target = get_target(message)
if target:
bot.unban_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"""Пользователь { telebot.util.user_link(message.reply_to_message.from_user) } разблокирован.
""", parse_mode='HTML') """, parse_mode='HTML')
else:
catch_error(message, "no_user")
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(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):
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 :]
bot.reply_to(message, f"""Установлено новое приветственное сообщение: bot.reply_to(message, f"""Установлено новое приветственное сообщение:
\n{db[str(message.chat.id)]}""", parse_mode='HTML') \n{db[str(message.chat.id)]}""", parse_mode='HTML')
write_db(db) write_db()
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['welcome']) @bot.message_handler(commands=['welcome'])
def welcome(message): def welcome(message):
try: try:
global db global db
read_db()
bot.reply_to(message, f"""Приветственное сообщение: bot.reply_to(message, f"""Приветственное сообщение:
\n{db[str(message.chat.id)]}""", parse_mode='HTML') \n{db[str(message.chat.id)]}""", parse_mode='HTML')
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['lock']) @bot.message_handler(commands=['lock'])
def lock(message): def lock(message):
@ -188,7 +257,7 @@ def lock(message):
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['unlock']) @bot.message_handler(commands=['unlock'])
def unlock(message): def unlock(message):
@ -199,7 +268,21 @@ def unlock(message):
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['id'])
def getid(message):
try:
if message.from_user.id in get_admins(message):
bot.reply_to(message, "ID: " + telebot.formatting.hcode(str(get_target(message))), parse_mode="HTML" )
else:
bot.reply_to(message, "Увы, но у вас нету прав.")
except:
catch_error(message)
######################SUPPORT########
@bot.message_handler(commands=['support']) @bot.message_handler(commands=['support'])
def support(message): def support(message):
@ -209,7 +292,7 @@ def support(message):
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}")
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
@bot.message_handler(commands=['reply']) @bot.message_handler(commands=['reply'])
def reply(message): def reply(message):
if message.chat.id == 2057834471: if message.chat.id == 2057834471:
@ -221,23 +304,72 @@ def reply(message):
bot.reply_to(message, f"Ответ был отправлен пользователю {id}") bot.reply_to(message, f"Ответ был отправлен пользователю {id}")
bot.send_message(id, "Ответ разработчика:\n\n" + text) bot.send_message(id, "Ответ разработчика:\n\n" + text)
except: except:
bot.reply_to(message, "Что-то пошло не так ♿️") catch_error(message)
else: else:
bot.reply_to(message, "Увы, но у вас нету прав.") bot.reply_to(message, "Увы, но у вас нету прав.")
#####################WELCOME#####
@bot.message_handler(content_types=["new_chat_members"]) @bot.message_handler(content_types=["new_chat_members"])
def handler_new_member(message): def handler_new_member(message):
try: try:
global db global db
bot.reply_to(message, db["welcome"], parse_mode='HTML') read_db()
bot.reply_to(message, db[str(message.chat.id)], parse_mode='HTML')
except: except:
pass catch_error(message)
##############ANALYTIC########
@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")
# For what?
# This add users = {}
##################CATCH ERRORS####
import logging
import traceback
from io import StringIO # For catch log to variable
# Basic init
global log_stream
log_stream = StringIO()
logging.basicConfig(stream=log_stream)
def catch_error(message, err_type = None):
if not err_type:
global log_stream
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')
log_stream.truncate(0) # Clear
log_stream.seek(0) # Clear
elif err_type == "no_user":
bot.reply_to(message, "Не указан пользователь.")
##################MAIN THREAD#####
#'''
while True:
try:
bot.polling()
except KeyboardInterrupt:
exit()
except:
pass
'''
bot.polling() bot.polling()
'''

Loading…
Cancel
Save