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