Beta-update
This commit is contained in:
parent
fba7fec741
commit
9966167dd5
264
mod.py
264
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 :])
|
|
||||||
|
|
||||||
return target
|
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#####
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['start'])
|
read_db()
|
||||||
|
bot = telebot.TeleBot(db['token'])
|
||||||
|
|
||||||
|
|
||||||
|
##################COMMANDS#######
|
||||||
|
|
||||||
|
@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"])
|
||||||
|
def handler_new_member(message):
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(content_types=["new_chat_members"])
|
|
||||||
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:
|
||||||
|
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:
|
except:
|
||||||
pass
|
pass
|
||||||
|
'''
|
||||||
|
|
||||||
bot.polling()
|
bot.polling()
|
||||||
|
'''
|
||||||
|
Loading…
Reference in New Issue
Block a user