This commit is contained in:
2025-03-03 20:42:31 +03:00
parent 67b708bdff
commit 9cda21ea29
4 changed files with 43 additions and 36 deletions
+17 -8
View File
@@ -1,7 +1,3 @@
import os
import sys
import telebot
import threading
from config import config, Messages
from telebot import types
from plugin.user import User
@@ -88,12 +84,19 @@ def handle_all_messages(message: types.Message):
if __name__ == "__main__":
print("/t--- Bot started ---")
print("\t--- Bot started ---")
admins = Admin.get_all_admins()
print(admins)
print(Admin._db.find({}))
print([(data, "user_id" in data) for data in Admin._db.find({})])
for admin in admins:
bot.send_message(
admin["user_id"],
admin.user_id,
"Служебное сообщение: бот был перезапущен.",
)
@@ -111,14 +114,20 @@ if __name__ == "__main__":
users = User.get_all()
for user in users:
bot.send_message(
user["user_id"],
user.user_id,
"Напоминание, что наше мероприятие пройдёт уже завтра! Следите за новостями)",
)
if len(user.type) != 4:
bot.send_message(
user.user_id,
"Вы ещё не прошли тест! Пожалуйста, пройдите его, чтобы мы могли вас зарегистрировать.",
)
admins = Admin.get_all_admins()
for admin in admins:
bot.send_message(
admin["user_id"],
admin.user_id,
"Отправлено напоминание о скором начале мероприятия.",
)
time.sleep(10)
+19 -21
View File
@@ -3,7 +3,7 @@ from config import config
import os
import threading
import time
from plugin.user import User
from plugin.user import User, users_reg
from plugin.shuffle import Shuffle, already_matched
from plugin.bot_instance import bot
@@ -26,7 +26,7 @@ class Admin:
data = self._db.find_one({"user_id": self.user_id})
if data:
self.name = data["name"]
self.added_by = data["added_by"]
self.added_by = data.get("added_by")
else:
raise ValueError("Admin not found")
@@ -109,6 +109,7 @@ class Admin:
# ----------------- TELEBOT ----------------- #
def admin_only(func):
def wrapper(message, *args, **kwargs):
if Admin.is_admin(message.chat.id):
return func(message, *args, **kwargs)
@@ -276,40 +277,34 @@ class Admin:
for admin in Admin.get_all_admins():
bot.send_message(
admin["user_id"],
"Отправлено приглашение пользователем. В данный момент подтвердило участие 0 человек. Запускайте команду /end_random для завершения регистрации",
admin.user_id,
"Отправлено приглашение пользователем. В данный момент подтвердило участие 0 человек.\
\n/update чтобы узнать, сколько уже подтвердило участие\
\n/end_random для завершения регистрации",
)
User.start_shuffle_reg()
def monitor_participation():
while True:
participants = len(already_matched)
return
@bot.message_handler(commands=["update"])
@admin_only
def update_random_command(message):
bot.send_message(
message.chat.id,
f"В данный момент подтвердило участие {participants} человек",
f"Подтвердило участие: {len(users_reg)} человек",
)
time.sleep(5)
thread = threading.Thread(
target=monitor_participation, name="monitor_participation"
)
thread.start()
return
@bot.message_handler(commands=["end_random", "random_again"])
@admin_only
def end_random_command(message):
for thread in threading.enumerate():
if thread.name == "monitor_participation":
thread.kill()
bot.send_message(message.chat.id, "Регистрация завершена. Ожидайте")
pairs = Shuffle()
for pair in pairs:
if pair[1]:
if len(pair) == 2:
bot.send_message(
pair[0].user_id,
f"Ваша пара: {pair[1].name}. Парта находится под номером: {pairs.index(pair) + 1})",
@@ -327,8 +322,11 @@ class Admin:
with open("pairs.txt", "w") as f:
str_pair = ""
for pair in pairs:
if len(pair) == 2:
str_pair += f"Парта {pairs.index(pair) + 1}: {pair[0].name} | {pair[1].name}\n"
else:
str_pair += (
f"Парта {pairs.index(pair) + 1}: {pair[0].name} | {pair[1].name}\n"
f"Парта {pairs.index(pair) + 1}: {pair[0].name} | Нет пары\n"
)
f.write(str_pair)
@@ -336,7 +334,7 @@ class Admin:
with open("pairs.txt", "rb") as f:
for admin in Admin.get_all_admins():
bot.send_document(
admin["user_id"],
admin.user_id,
f,
caption="Распредение по парам.",
)
+1 -1
View File
@@ -11,7 +11,7 @@ def Shuffle() -> List[Tuple[User, User]]:
pairs = []
if len(users) % 2 != 0:
pairs.append((users.pop(),))
pairs.append((users.pop(), None))
# Step 1: Match men with women by compatibility and age
for user in users:
+3 -3
View File
@@ -2,7 +2,7 @@ from db import DB
from plugin.bot_instance import bot
from config import Messages
from telebot import types
from typing import List, Tuple
from typing import List
users_reg: List["User"] = []
@@ -132,7 +132,7 @@ class User:
@staticmethod
def start_shuffle_reg():
users_reg.clear()
users = [user for user in User.get_all() if user.type]
users = [user for user in User.get_all() if len(user.type) == 4]
markup = types.InlineKeyboardMarkup()
markup.add(
@@ -151,9 +151,9 @@ class User:
users_reg.append(user)
bot.edit_message_text(
"Вы добавлены в список участников! Пожалуйста, подождите, пока все зарегистрируются",
call.message.chat.id,
call.message.message_id,
"Вы добавлены в список участников! Пожалуйста, подождите, пока все зарегистрируются",
reply_markup=None,
)