Example #1
0
def _(message):
    response = \
"Этот бот позволяет развернуть Вашего бота \
на сервере, чтобы держать его запущенным 24/7. \
\nДля связи: <code>/feedback {сообщение}</code>"

    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
    keyboard.row('✨Попробовать✨')
    bot.send_message(message.chat.id,
                     response,
                     reply_markup=keyboard,
                     parse_mode='html')
    db = SQLighter(DB)
    if not db.get_user(message.from_user.id):
        if re.search('/start (\w+)', message.text):
            ref = re.search('/start (\w+)', message.text).group(1)
            user = db.get_ref(ref)
            if user:
                db.insert_user(message.from_user.id, user[0])
                db.update_user(user[0], ref_count=user[3] + 1)
                logger.info(f"{user[0]} invited {message.from_user.id}")
                try:
                    response = "Похоже, кто-то пришел к нам по вашей ссылке. Спасибо."
                    bot.send_message(user[0], response)
                except Exception as e:
                    logger.error(e)
    if not db.get_user(message.from_user.id):
        db.insert_user(message.from_user.id)
        logger.info(f"{message.from_user.id} has registered")
Example #2
0
def _(message):
    logger.info(f"{message.from_user.id} sent file")
    mes = None
    try:
        mes = bot.reply_to(message, "Обрабатываем...")
        user_id = message.from_user.id
        file_name = re.sub(r'[^a-zA-Z0-9\.\_]', '', message.document.file_name)
        if file_name == ".zip":
            file_name = "untitled.zip"
        bot_name, _ = os.path.splitext(file_name)
        if not re.search(r'[a-zA-Z0-9]', bot_name):
            bot_name = "untitled"
        downloaded_file = bot.download_file(
            bot.get_file(message.document.file_id).file_path)
        if message.document.mime_type != "application/zip":
            bot.edit_message_text("Файл должен быть формата zip!", mes.chat.id,
                                  mes.message_id)
            logger.error(f"{message.from_user.id} sent wrong file (ext)")
            return
        path = f'./download/{user_id}/'
        if not os.path.exists(path):
            os.makedirs(path)
        path += file_name
        path = os.path.abspath(path)
        with open(path, 'wb') as file:
            file.write(downloaded_file)
        with zipfile.ZipFile(path, 'r') as z:
            files = z.namelist()
        req = False
        st = False
        for element in files:
            if 'requirements.txt' in element:
                req = True
            if 'tostart.txt' in element:
                st = True
        err = ""
        if not req:
            err += "Вы забыли файл requirements.txt\n"
        if not st:
            err += "Вы забыли файл tostart.txt\n"
        if not (req and st):
            os.remove(path)
            bot.edit_message_text(err, mes.chat.id, mes.message_id)
            logger.error(
                f"{message.from_user.id} sent wrong file (no requirements.txt or/and tostart.txt)"
            )
            return
        db = SQLighter(DB)
        bots = db.get_bots(user_id)
        exist = False
        for item in bots:
            if bot_name in item:
                db.update_bot(item[0], status=False)
                bot_id = item[0]
                exist = True
        if not exist:
            bot_id = backend.get_hash(user_id) + backend.get_hash(
                int(time.time() - EPOCH))
            db.insert_bot(bot_id, bot_name, False, 0, user_id)
        backend.deploy(bot_id, user_id, file_name)
        bot.edit_message_text("Файл принят!", mes.chat.id, mes.message_id)
        logger.info(
            f"Successfully set bot up: user_id {message.from_user.id}, bot_id {bot_id}"
        )
    except Exception as e:
        if mes:
            bot.edit_message_text("Произошла ошибка... Попробуйте еще раз.",
                                  mes.chat.id, mes.message_id)
        else:
            bot.reply_to(message, "Произошла ошибка... Попробуйте еще раз.")
        if not db.get_user(message.from_user.id):
            db.insert_user(message.from_user.id)
        logger.error(e)