from config import config, Messages
from telebot import types
from plugin.user import User
from plugin.admin import Admin, AdminMessages
from plugin.bot_instance import bot, BotCommands
from plugin.register import start_reg_name
from datetime import datetime, timedelta
import time
admin_id = config.ADMIN_ID
@bot.message_handler(commands=BotCommands.Start)
def start_message(message: types.Message):
if Admin.is_admin(message.chat.id):
help_message(message)
return
if User(message.chat.id).name is not None:
user = User(message.chat.id)
markup = types.InlineKeyboardMarkup()
markup.add(
types.InlineKeyboardButton(
"Оставьте как есть!", callback_data="registration_skip"
)
)
markup.add(
types.InlineKeyboardButton(
"Зарегестрироваться заново", callback_data="registration_change"
)
)
bot.send_message(message.chat.id, Messages.ALREADY_REGISTERED)
bot.send_message(
message.chat.id,
Messages.REGISTRATION_CONFIRM.format(
user.name,
user.age,
"Парень" if user.gender == "man" else "Девушка",
user.faculty,
user.group,
"Да" if user.agree_upload else "Нет",
),
reply_markup=markup,
)
return
for msg in Messages.WELCOME_LIST:
bot.send_message(message.chat.id, msg)
bot.send_message(message.chat.id, Messages.ENTER_NAME)
bot.register_next_step_handler(message, start_reg_name)
return
@bot.message_handler(commands=BotCommands.Help)
def help_message(message: types.Message):
if not Admin.is_admin(message.chat.id):
for msg in Messages.HELPS:
bot.send_message(message.chat.id, msg)
else:
bot.send_message(message.chat.id, AdminMessages.ADMIN_HELP)
return
@bot.message_handler(commands=BotCommands.Source)
def source(message: types.Message):
bot.send_message(
message.chat.id,
(
"Страничка бота на Github!"
"\n\nСтарался раб профкомский Дмитрий. mewow."
),
)
return
@bot.message_handler(func=lambda message: True)
def handle_all_messages(message: types.Message):
help_message(message)
if __name__ == "__main__":
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,
"Служебное сообщение: бот был перезапущен.",
)
# Test connection to the database
try:
User.get_all()
print("Database connection successful.")
except Exception as e:
print(f"Database connection failed: {e}")
time_for_notif = config.DATE_START
while True:
if config.DATE_START - datetime.now() < timedelta(days=1):
users = User.get_all()
for user in users:
bot.send_message(
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,
"Отправлено напоминание о скором начале мероприятия.",
)
time.sleep(10)