some fixs

This commit is contained in:
2025-03-01 01:49:33 +03:00
parent 2368b5df8c
commit a688a19b4e
13 changed files with 100 additions and 57 deletions
Regular → Executable
+18 -5
View File
@@ -1,5 +1,5 @@
from db import DB
import config
from config import config
import os
import threading
import time
@@ -34,17 +34,21 @@ class Admin:
@staticmethod
def get_all_admins():
return Admin._db.find({})
return [
Admin(data["user_id"]) for data in Admin._db.find({}) if "user_id" in data
]
@staticmethod
def is_admin(user_id):
return Admin._db.find({"user_id": user_id}) is not None
return (Admin._db.find_one({"user_id": user_id}) is not None) or (
user_id == config.ADMIN_ID
)
@staticmethod
def add_admin(new_user_id, name, unique_key) -> int:
key_data = Admin._db.find_one({"unique_key": unique_key})
if new_user_id == config.ADMIN_ID and not Admin.is_admin(new_user_id):
if new_user_id == config.ADMIN_ID:
Admin._db.insert({"user_id": new_user_id, "name": name})
return new_user_id
@@ -341,16 +345,25 @@ class Admin:
return
@bot.message_handler(commands=["r", "restart"])
@admin_only
def restart_command(message):
# os.system("python3 main.py")
os._exit(0)
return
class AdminMessages:
ADMIN_HELP = (
"Вы администратор! Вот что вы можете сделать:\n"
"/remove_admin - удалить админа\n"
"/generate_key - сгенерировать уникальный ключ (<code>admin_red</code> - чтобы админ добавился)\n"
"/generate_key - сгенерировать уникальный ключ (<code>admin_reg</code> - чтобы админ добавился)\n"
"/delete_user - удалить пользователя\n"
"/stats - статистика\n"
"/send_message - отправить всем сообщение\n"
"/random - зарандомить людей для 1 тура\n"
"/random_again - зарандомить людей без повторной регистрации\n"
"<code>clear_all</code> - удаляет ВСЕХ пользователей для их повторной регистрации\n"
"/restart - перезапуск бота"
)
Regular → Executable
View File
Regular → Executable
+31 -13
View File
@@ -9,15 +9,26 @@ import re
def start_reg_name(message: types.Message):
user = User(message.chat.id, message.text)
user = User(message.chat.id)
user.name = message.text
bot.send_message(message.chat.id, Messages.ENTER_AGE)
bot.register_next_step_handler(message, start_reg_age)
return
def start_reg_age(message: types.Message):
user = User(message.chat.id)
if not message.text.isdigit():
bot.send_message(message.chat.id, "Введите число")
bot.register_next_step_handler(message, start_reg_age)
return
user.age = int(message.text)
markup = types.InlineKeyboardMarkup()
@@ -25,9 +36,9 @@ def start_reg_age(message: types.Message):
types.InlineKeyboardButton(Messages.GENDER_WOMAN, callback_data="gender_woman"),
types.InlineKeyboardButton(Messages.GENDER_MAN, callback_data="gender_man"),
)
bot.send_message(message.chat.id, Messages.ENTER_GENDER)
bot.send_message(message.chat.id, Messages.ENTER_GENDER, reply_markup=markup)
bot.register_next_step_handler(message, start_reg_gender)
return
@bot.callback_query_handler(func=lambda call: "gender" in call.data)
@@ -70,7 +81,7 @@ def start_reg_group(message: types.Message):
Messages.REGISTRATION_CONFIRM.format(
user.name,
user.age,
user.gender,
"Парень" if user.gender == "man" else "Девушка",
user.faculty,
user.group,
),
@@ -128,12 +139,10 @@ def test_question(call: types.CallbackQuery):
call.message.chat.id, call.message.message_id, reply_markup=None
)
if len(user.type) == 4:
show_result(call.message)
return
if call.data != "test_yes":
user.type += call.data.split("_")[-1]
user.type += TestMessages.TEST_QUESTIONS[len(user.type)]["answers"][
int(call.data[-1])
][1]
bot.edit_message_text(
call.message.text
@@ -145,12 +154,21 @@ def test_question(call: types.CallbackQuery):
call.message.message_id,
) # упростить
if len(user.type) == 4:
show_result(call.message)
return
question = TestMessages.TEST_QUESTIONS[len(user.type)]
text = question["question"]
markup = types.InlineKeyboardMarkup()
for answer in question["answers"]:
markup.add(
types.InlineKeyboardButton(answer[0], callback_data=f"test_{answer[1]}")
)
markup.add(
types.InlineKeyboardButton("Первый вариант", callback_data=f"test_0"),
types.InlineKeyboardButton("Второй вариант", callback_data=f"test_1"),
)
text += f"\n\n1. {question['answers'][0][0]} \n\n2. {question['answers'][1][0]}"
bot.send_message(call.message.chat.id, text, reply_markup=markup)
return
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
+15 -17
View File
@@ -10,7 +10,7 @@ users_reg: List["User"] = []
class User:
_db = DB("Users")
def __init__(self, user_id, name):
def __init__(self, user_id, name=None):
self.user_id: int = user_id
self._name: str = name
self._age: int = None
@@ -19,10 +19,6 @@ class User:
self._group: str = None
self._type: str = None
self._save()
def __init__(self, user_id):
self.user_id: int = user_id
self._load()
@property
@@ -121,7 +117,8 @@ class User:
def _load(self):
if not self._db.exist({"_id": self.user_id}):
raise ValueError("User not found")
self._save()
# raise ValueError("User not found")
data = self._db.find_one({"_id": self.user_id})
self._name = data["name"]
@@ -145,19 +142,20 @@ class User:
for user in users:
bot.send_message(user.user_id, Messages.MATCHING_START, reply_markup=markup)
@bot.callback_query_handler(func=lambda call: call.data == "shuffle_agree")
def add_user_to_reg(call: types.CallbackQuery):
user = User(call.message.chat.id)
users_reg.append(user)
return
bot.edit_message_text(
call.message.chat.id,
call.message.message_id,
"Вы добавлены в список участников! Пожалуйста, подождите, пока все зарегистрируются",
reply_markup=None,
)
@staticmethod
@bot.callback_query_handler(func=lambda call: call.data == "shuffle_agree")
def add_user_to_reg(call: types.CallbackQuery):
user = User(call.message.chat.id)
users_reg.append(user)
return
bot.edit_message_text(
call.message.chat.id,
call.message.message_id,
"Вы добавлены в список участников! Пожалуйста, подождите, пока все зарегистрируются",
reply_markup=None,
)
return