Фикс багов, мелкие обновления
This commit is contained in:
parent
35d48a6307
commit
d02e9c184c
127
mod.py
127
mod.py
@ -9,9 +9,9 @@ global db, users, la
|
||||
####### CREATE DB IF NOT EXIST
|
||||
|
||||
if not os.path.exists('db.json'):
|
||||
db = {"token": "None"}
|
||||
db = {'token': 'None'}
|
||||
js = json.dumps(db, indent=2)
|
||||
with open("db.json", "w") as outfile:
|
||||
with open('db.json', 'w') as outfile:
|
||||
outfile.write(js)
|
||||
|
||||
print('Input token in "None" (db.json)')
|
||||
@ -20,13 +20,13 @@ if not os.path.exists('db.json'):
|
||||
if not os.path.exists('users.json'):
|
||||
users = {}
|
||||
js = json.dumps(users, indent=2)
|
||||
with open("users.json", "w") as outfile:
|
||||
with open('users.json', 'w') as outfile:
|
||||
outfile.write(js)
|
||||
|
||||
if not os.path.exists('la.json'):
|
||||
la = {}
|
||||
js = json.dumps(la, indent=2)
|
||||
with open("la.json", "w") as outfile:
|
||||
with open('la.json', 'w') as outfile:
|
||||
outfile.write(js)
|
||||
############WORK WITH DBs##########
|
||||
|
||||
@ -37,7 +37,7 @@ def read_db():
|
||||
def write_db():
|
||||
global db
|
||||
js = json.dumps(db, indent=2)
|
||||
with open("db.json", "w") as outfile:
|
||||
with open('db.json', 'w') as outfile:
|
||||
outfile.write(js)
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ def read_users():
|
||||
def write_users():
|
||||
global users
|
||||
js = json.dumps(users, indent=2)
|
||||
with open("users.json", "w") as outfile:
|
||||
with open('users.json', 'w') as outfile:
|
||||
outfile.write(js)
|
||||
|
||||
# LA - Low Admin.
|
||||
@ -59,7 +59,7 @@ def read_la():
|
||||
return la
|
||||
def write_la(la):
|
||||
js = json.dumps(la, indent=2)
|
||||
with open("la.json", "w") as outfile:
|
||||
with open('la.json', 'w') as outfile:
|
||||
outfile.write(js)
|
||||
|
||||
####################FAST HASH#################
|
||||
@ -74,13 +74,13 @@ def sha(text):
|
||||
|
||||
def get_admins(message):
|
||||
try:
|
||||
if bot.get_chat(message.chat.id).type == "private":
|
||||
if bot.get_chat(message.chat.id).type == 'private':
|
||||
return []
|
||||
else:
|
||||
admins = bot.get_chat_administrators(chat_id=message.chat.id)
|
||||
true_admins = []
|
||||
for i in admins:
|
||||
if i.status == "creator" or i.can_restrict_members == True:
|
||||
if i.status == 'creator' or i.can_restrict_members == True:
|
||||
true_admins.append(i.user.id)
|
||||
return true_admins
|
||||
except Exception as e:
|
||||
@ -89,7 +89,7 @@ def get_admins(message):
|
||||
|
||||
# Fix for anon admins, all anon (not premium) users == admins
|
||||
def is_anon(message):
|
||||
if message.from_user.username == "Channel_Bot" or message.from_user.username == "GroupAnonymousBot":
|
||||
if message.from_user.username == 'Channel_Bot' or message.from_user.username == 'GroupAnonymousBot':
|
||||
if message.from_user.is_premium == None:
|
||||
return True
|
||||
else:
|
||||
@ -165,7 +165,7 @@ def have_rights(message, set_la = False):
|
||||
if str(message.from_user.username) in la[str(message.chat.id)]:
|
||||
return True
|
||||
else:
|
||||
bot.reply_to(message, "Увы, но у вас нету прав.")
|
||||
bot.reply_to(message, 'Увы, но у вас нету прав.')
|
||||
|
||||
def key_by_value(dictionary, key):
|
||||
for i in dictionary:
|
||||
@ -179,7 +179,7 @@ def analytic(message):
|
||||
|
||||
if key_by_value(users, message.from_user.id) == message.from_user.username:
|
||||
pass
|
||||
elif message.from_user.username == "None":
|
||||
elif message.from_user.username == 'None':
|
||||
pass
|
||||
else:
|
||||
users[sha(message.from_user.username)] = message.from_user.id
|
||||
@ -197,18 +197,18 @@ bot = telebot.TeleBot(db['token'])
|
||||
|
||||
@bot.message_handler(commands=['start', 'faq'])
|
||||
def send_welcome(message):
|
||||
bot.reply_to(message, """Колотушка работает 🔨
|
||||
bot.reply_to(message, '''Колотушка работает 🔨
|
||||
|
||||
Что это такое?
|
||||
Это минимальный бот-модератор без слежки с открытым кодом.
|
||||
Код: https://gitea.gulyaipole.fun/justuser/just_moderator
|
||||
|
||||
Список команд - /help
|
||||
""")
|
||||
''')
|
||||
|
||||
@bot.message_handler(commands=['help'])
|
||||
def help(message):
|
||||
bot.reply_to(message, """
|
||||
bot.reply_to(message, '''
|
||||
Список команд:
|
||||
|
||||
/mute ⇁ Мут человека в ответ на сообщение
|
||||
@ -229,7 +229,7 @@ def help(message):
|
||||
/html <code> ⇁ Отправка текста сообщения в режиме формата html.
|
||||
|
||||
/support ⇁ Написать разработчику. Прошу писать по делу.
|
||||
""")
|
||||
''')
|
||||
|
||||
@bot.message_handler(commands=['mute'])
|
||||
def mute(message):
|
||||
@ -240,10 +240,10 @@ def mute(message):
|
||||
if target:
|
||||
if time:
|
||||
bot.restrict_chat_member(message.chat.id, target, until_date = message.date + time[1])
|
||||
answer = f"Пользователь { get_name(message) } был заглушён на {time[0]} {time[2]}."
|
||||
answer = f'Пользователь { get_name(message) } был заглушён на {time[0]} {time[2]}.'
|
||||
else:
|
||||
bot.restrict_chat_member(message.chat.id, target, until_date = message.date)
|
||||
answer = f"Пользователь { get_name(message) } был заглушен."
|
||||
answer = f'Пользователь { get_name(message) } был заглушен.'
|
||||
try:
|
||||
bot.reply_to(message, answer, parse_mode='HTML')
|
||||
except:
|
||||
@ -260,11 +260,13 @@ def unmute(message):
|
||||
if have_rights(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"""Пользователь { get_name(message) } снова имеет дар речи.
|
||||
""", parse_mode='HTML')
|
||||
bot.restrict_chat_member(message.chat.id, target, can_send_messages=True
|
||||
, can_send_other_messages = True, can_send_polls = True
|
||||
, can_add_web_page_previews = True, until_date = message.date)
|
||||
bot.reply_to(message, f'''Пользователь { get_name(message) } снова имеет дар речи.
|
||||
''', parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, None, "no_user")
|
||||
catch_error(message, None, 'no_user')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -278,10 +280,10 @@ def kick(message):
|
||||
bot.ban_chat_member(message.chat.id, target)
|
||||
bot.unban_chat_member(message.chat.id, target)
|
||||
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } был исключён.
|
||||
""", parse_mode='HTML')
|
||||
bot.reply_to(message, f'''Пользователь { get_name(message) } был исключён.
|
||||
''', parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, None, "no_user")
|
||||
catch_error(message, None, 'no_user')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -293,10 +295,10 @@ def ban(message):
|
||||
target = get_target(message)
|
||||
if target:
|
||||
bot.ban_chat_member(message.chat.id, target)
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } исключён и заблокирован.
|
||||
""", parse_mode='HTML')
|
||||
bot.reply_to(message, f'''Пользователь { get_name(message) } исключён и заблокирован.
|
||||
''', parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, None, "no_user")
|
||||
catch_error(message, None, 'no_user')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -307,10 +309,10 @@ def unban(message):
|
||||
target = get_target(message)
|
||||
if target:
|
||||
bot.unban_chat_member(message.chat.id, target)
|
||||
bot.reply_to(message, f"""Пользователь { get_name(message) } разблокирован.
|
||||
""", parse_mode='HTML')
|
||||
bot.reply_to(message, f'''Пользователь { get_name(message) } разблокирован.
|
||||
''', parse_mode='HTML')
|
||||
else:
|
||||
catch_error(message, None, "no_user")
|
||||
catch_error(message, None, 'no_user')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -319,10 +321,10 @@ def setwelcome(message):
|
||||
try:
|
||||
if have_rights(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"""Установлено новое приветственное сообщение:
|
||||
\n{db[str(message.chat.id)]}""", parse_mode='HTML')
|
||||
bot.reply_to(message, f'''Установлено новое приветственное сообщение:
|
||||
\n{db[str(message.chat.id)]}''', parse_mode='HTML')
|
||||
write_db()
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
@ -332,8 +334,8 @@ def welcome(message):
|
||||
try:
|
||||
global db
|
||||
read_db()
|
||||
bot.reply_to(message, f"""Приветственное сообщение:
|
||||
\n{db[str(message.chat.id)]}""", parse_mode='HTML')
|
||||
bot.reply_to(message, f'''Приветственное сообщение:
|
||||
\n{db[str(message.chat.id)]}''', parse_mode='HTML')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -342,9 +344,9 @@ def lock(message):
|
||||
try:
|
||||
if have_rights(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.reply_to(message, "Чат был заблокирован 🔒")
|
||||
bot.reply_to(message, 'Чат был заблокирован 🔒')
|
||||
else:
|
||||
bot.reply_to(message, "Увы, но у вас нету прав.")
|
||||
bot.reply_to(message, 'Увы, но у вас нету прав.')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -353,7 +355,7 @@ def unlock(message):
|
||||
try:
|
||||
if have_rights(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.reply_to(message, "Чат был разблокирован 🔓")
|
||||
bot.reply_to(message, 'Чат был разблокирован 🔓')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -361,7 +363,7 @@ def unlock(message):
|
||||
def getid(message):
|
||||
try:
|
||||
if have_rights(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' )
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -401,16 +403,17 @@ def html(message):
|
||||
def chatid(message):
|
||||
try:
|
||||
if have_rights(message):
|
||||
bot.reply_to(message, "Айди чата: " + telebot.formatting.hcode( str(message.chat.id) ), parse_mode='HTML')
|
||||
bot.reply_to(message, 'Айди чата: ' + telebot.formatting.hcode( str(message.chat.id) ), parse_mode='HTML')
|
||||
else:
|
||||
bot.reply_to(message, "Увы, но у вас нету прав.")
|
||||
bot.reply_to(message, 'Увы, но у вас нету прав.')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
############ LOW-ADMIN ##############
|
||||
|
||||
def have_la(id):
|
||||
def have_la(message):
|
||||
try:
|
||||
id = message.from_user.id
|
||||
la = read_la()
|
||||
if id in la:
|
||||
return True
|
||||
@ -425,9 +428,9 @@ def have_la(id):
|
||||
def la(message):
|
||||
bot.reply_to(message, f'''Доступные команды:
|
||||
|
||||
{telebot.formatting.hcode("/la-list")} - список администраторов в режиме low-admin
|
||||
{telebot.formatting.hcode("/la-add @nick")} - добавить в администраторы
|
||||
{telebot.formatting.hcode("/la-del @nick")} - удалить из администраторов
|
||||
{telebot.formatting.hcode('/la-list')} - список администраторов в режиме low-admin
|
||||
{telebot.formatting.hcode('/la-add @nick')} - добавить в администраторы
|
||||
{telebot.formatting.hcode('/la-del @nick')} - удалить из администраторов
|
||||
''', parse_mode = 'HTML')
|
||||
|
||||
@bot.message_handler(commands=['la-list'])
|
||||
@ -436,7 +439,7 @@ def la_list(message):
|
||||
if have_rights(message, set_la=True):
|
||||
la = read_la()
|
||||
if have_la(str(message.chat.id)):
|
||||
s = "Список администраторов в режиме low-admin:\n"
|
||||
s = 'Список администраторов в режиме low-admin:\n'
|
||||
for i in la[str(message.chat.id)]:
|
||||
s = s + '\n@' + i
|
||||
bot.reply_to(message, s, parse_mode='HTML')
|
||||
@ -454,7 +457,7 @@ def la_add(message):
|
||||
la[str(message.chat.id)].append(nick)
|
||||
print(la)
|
||||
write_la(la)
|
||||
bot.reply_to(message, f"Пользователь @{nick} успешно добавлен в список администраторов.")
|
||||
bot.reply_to(message, f'Пользователь @{nick} успешно добавлен в список администраторов.')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -469,7 +472,7 @@ def la_del(message, set_la=True):
|
||||
if nick in la[str(message.chat.id)]:
|
||||
la[str(message.chat.id)].remove(nick)
|
||||
write_la(la)
|
||||
bot.reply_to(message, f"Пользователь @{nick} был исключён из списка администраторов.")
|
||||
bot.reply_to(message, f'Пользователь @{nick} был исключён из списка администраторов.')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -480,8 +483,9 @@ def la_del(message, set_la=True):
|
||||
@bot.chat_join_request_handler()
|
||||
def join_request(message: telebot.types.ChatJoinRequest):
|
||||
try:
|
||||
bot.send_message(message.chat.id, f"""Поступила заявка на вступление от { telebot.util.user_link(message.from_user) }
|
||||
Принять: { telebot.formatting.hcode(f"/accept {message.from_user.id}") }""", parse_mode="HTML")
|
||||
bot.send_message(message.chat.id, f'''Поступила заявка на вступление от { telebot.util.user_link(message.from_user) }
|
||||
Принять: { telebot.formatting.hcode(f'/accept {message.from_user.id}') }''', parse_mode='HTML')
|
||||
analytic(message)
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -491,7 +495,7 @@ def accept_request(message):
|
||||
if have_rights(message):
|
||||
if len(message.text.split()) == 2:
|
||||
bot.approve_chat_join_request(message.chat.id, message.text.split()[1] )
|
||||
bot.reply_to(message, "Заявка принята.")
|
||||
bot.reply_to(message, 'Заявка принята.')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -500,19 +504,20 @@ def accept_request(message):
|
||||
@bot.message_handler(commands=['support'])
|
||||
def support(message):
|
||||
try:
|
||||
bot.reply_to(message, f"""Связь с аднимистратором в @just_anonchat_bot
|
||||
Адрес - {telebot.formatting.hcode(":justuser")}""", parse_mode="HTML")
|
||||
bot.reply_to(message, f'''Связь с аднимистратором в @just_anonchat_bot
|
||||
Адрес - {telebot.formatting.hcode(':justuser')}''', parse_mode='HTML')
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
#####################WELCOME#####
|
||||
|
||||
@bot.message_handler(content_types=["new_chat_members"])
|
||||
@bot.message_handler(content_types=['new_chat_members'])
|
||||
def handler_new_member(message):
|
||||
try:
|
||||
global db
|
||||
read_db()
|
||||
bot.reply_to(message, db[str(message.chat.id)], parse_mode='HTML')
|
||||
analytic(message)
|
||||
except Exception as e:
|
||||
catch_error(message, e)
|
||||
|
||||
@ -542,7 +547,7 @@ logging.basicConfig(stream=log_stream)
|
||||
|
||||
# Known errors
|
||||
known_errs = {
|
||||
"A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: not enough rights to restrict/unrestrict chat member": "Увы, но у бота не хватает прав для этого."
|
||||
'A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: not enough rights to restrict/unrestrict chat member': 'Увы, но у бота не хватает прав для этого.'
|
||||
}
|
||||
|
||||
# message error err_type ('no_user', ...)
|
||||
@ -559,16 +564,16 @@ def catch_error(message, e, err_type = None):
|
||||
logging.error(traceback.format_exc()) # Log error
|
||||
err = log_stream.getvalue() # Error to variable
|
||||
|
||||
bot.send_message(message.chat.id, "Critical error (свяжитись через /support ) :\n\n" + telebot.formatting.hcode(err), parse_mode='HTML')
|
||||
bot.send_message(message.chat.id, '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.send_message(message.chat.id, "Не указан пользователь.")
|
||||
elif err_type == 'no_user':
|
||||
bot.send_message(message.chat.id, 'Не указан пользователь.')
|
||||
|
||||
|
||||
##################MAIN THREAD#####
|
||||
'''
|
||||
#'''
|
||||
while True:
|
||||
try:
|
||||
bot.polling()
|
||||
@ -578,4 +583,4 @@ while True:
|
||||
pass
|
||||
'''
|
||||
bot.polling()
|
||||
#'''
|
||||
'''
|
||||
|
Loading…
Reference in New Issue
Block a user