Exemple #1
0
async def echo(msg: types.Message, state: FSMContext):
    text = msg.text
    if text == 'Полная':
        js = new_collection.find({}, { '_id' : 0})
        full = db_list(js)
        for elem in full:
            full_text = ''
            for i in elem:
                full_text += i + '\n'
            await bot.send_message(msg.from_user.id, full_text)
    elif text == 'Фио':
        js = new_collection.find({}, { 'doljname' : 1, 'Fname' : 1, 'Name': 1, 'Oname': 1, '_id' : 0})
        full = db_list(js)
        for elem in full:
            full_text = []
            for i in elem:
                full_text.append(i)
            full_text.insert(1, '-')
            full_text = ' '.join(full_text)
            await bot.send_message(msg.from_user.id, full_text)
    elif text == PASSWORD:
        await state.set_state(States.ADMIN)
        await bot.send_message(msg.from_user.id, "Теперь ты админ, что будем делать?", reply_markup=board_3)
    else:
        await bot.send_message(msg.from_user.id, 'Я не знаю таких слов')
Exemple #2
0
async def echo(msg: types.Message, state: FSMContext):
    text = msg.text
    if text == 'Полная':    #edit
        js = new_collection.find({}, { '_id' : 0, 'edited': 0})
        full = db_list(js)
        for elem in full:
            full_text = ''
            for i in elem:
                full_text += str(i) + '\n'
            await bot.send_message(msg.chat.id, full_text)
    elif text == 'Фио':     #edit
        js = new_collection.find({}, { 'Phone' : 0, 'Room' : 0, 'Mail': 0, '_id' : 0})
        full = db_list(js)
        str0 = ''
        for elem in full:
            full_text = []
            for i in elem:
                full_text.append(str(i))
            full_text.insert(1, '-')
            full_text = ' '.join(full_text)
            str0 += full_text + '\n\n'
        await bot.send_message(msg.chat.id, str0)
    elif text.isdigit():    #worker
        js = new_collection.find({}, { '_id' : 0, 'edited': 0})
        full = db_list(js)
        code = int(text)-1
        full_text = ''
        for i in range(len(full)):
            if code == i:
                for g in full[i]:
                    full_text += str(g) + '\n'
                await bot.send_message(msg.chat.id, full_text)
    else:
        await bot.send_message(msg.chat.id, 'Я не знаю таких слов')
Exemple #3
0
async def change(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone', 'Mail'] 
    if  text.isdigit():             #получает номер выбранного руководителя
        code = int(text)-1
        change = adm_collection.find({}, {'_id' : 0, 'edited': 0}).skip(code).limit(1)
        full = db_list(change)
        user_id = msg.from_user.id
        if len(full) < 1:           #проверка на существования такого номера в коллекции
            full_text = num_list()
            await bot.send_message(msg.chat.id, full_text)
            await bot.send_message(msg.chat.id, "Выбери кого редактироать клавиатуре!", reply_markup=board_4)
            return
        elif str(user_id) in full[0]:      #проверка admin_id, не допускает параллельного редактирования
            await bot.send_message(msg.chat.id, 'Редактирование сейчас недоступно, выберите другого человека', reply_markup=board_4)
            return
        else:
            new_doc = {'admin_id' : f'{user_id}'}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
        await state.update_data(code=text)
        full_text = ''
        for elem in full:
            if 'admin_id' in elem:
                elem.pop('admin_id')
            for value in elem:
                full_text += str(value) + '\n'
        await bot.send_message(msg.chat.id, full_text)
        await bot.send_message(msg.chat.id, "Что будем менять?", reply_markup=board_2)
    elif text == 'Назад':           #возврат в режим админа
        await state.set_state(States.ADMIN)
        await bot.send_message(msg.chat.id, "Если это все, что ты хотел - жми 'Сохранить', "
                            "ну или выбирай, что будем делать", reply_markup=board_3)
    else:                           #принимает параметр изменения и новые значения
        butt_list = ['Должность', 'Фамилия', 'Имя', 'Отчество', 'Кабинет', 'Телефон', 'Email']
        for i in range(len(butt_list)):
            if text == butt_list[i]:#запоминаем параметр изменения
                data = await state.get_data()
                if 'code' in data:
                    await state.update_data(text=i)
                    if i == 4:
                        await state.set_state(States.CHANGE_ROOM)
                    await bot.send_message(msg.chat.id, "Введи новое значение")
                    return
                else:
                    await bot.send_message(msg.chat.id, "Сначала выбери кого будем изменять", reply_markup=board_4)
        data = await state.get_data()
        if 'text' in data:          #проверка на параметр изменения&внесение изменений
            code = int(data['code'])    #номер руководителя в коллекции
            num = int(data['text'])     #параметр изменения
            change = adm_collection.find({}, {'_id' : 0, 'edited': 0}).skip(code-1).limit(1)
            full = db_list(change)
            new_doc = {f'{key_list[num]}' : text, 'edited': '1'}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
            await state.set_state(States.ADMIN)
            await bot.send_message(msg.chat.id, "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать", reply_markup=board_3)
        else:
            await bot.send_message(msg.chat.id, "Выбери, что будем менять на клавиатуре, либо напиши 'Назад', вернуться", reply_markup=board_2)
Exemple #4
0
async def change(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone', 'Mail']
    if  text.isdigit():
        code = int(text)-1
        change = adm_collection.find({}, {'_id' : 0}).skip(code).limit(1)
        full = db_list(change)
        user_id = msg.from_user.id
        if len(full[0]) > 7:
            if full[0][7] != str(user_id):
                await bot.send_message(msg.from_user.id, 'Редактирование сейчас недоступно, выберите другого человека', reply_markup=board_4)
                return
        else:
            new_doc = {'admin_id' : f'{user_id}'}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
        await state.update_data(code=text)
        full_text = ''
        for elem in full:
            if 'admin_id' in elem:
                elem.pop('admin_id')
            for value in elem:
                full_text += str(value) + '\n'
        await bot.send_message(msg.from_user.id, full_text)
        await bot.send_message(msg.from_user.id, "Что будем менять?", reply_markup=board_5)
    elif text == 'Назад':
        await state.set_state(States.ADMIN)
        await bot.send_message(msg.from_user.id, "Если это все, что ты хотел - жми 'Сохранить', "
                            "ну или выбирай, что будем делать", reply_markup=board_3)
    else:
        butt_list = ['Должность', 'Фамилия', 'Имя', 'Отчество', 'Кабинет', 'Телефон', 'Email']
        key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone' 'Mail']
        for i in range(len(butt_list)):
            if text == butt_list[i]:
                data = await state.get_data()
                if 'code' in data:
                    await state.update_data(text=i)
                    await bot.send_message(msg.from_user.id, "Введи новое значение")
                    return
                else:
                    await bot.send_message(msg.from_user.id, "Сначала выбери кого будем изменять", reply_markup=board_4)
        data = await state.get_data()
        if 'text' in data:
            code = int(data['code'])
            num = int(data['text'])
            change = adm_collection.find({}, {'_id' : 0}).skip(code-1).limit(1)
            full = db_list(change)
            new_doc = {f'{key_list[num]}' : text}
            adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
            await state.set_state(States.ADMIN)
            await bot.send_message(msg.from_user.id, "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать", reply_markup=board_3)
        else:
            await bot.send_message(msg.from_user.id, "Выбери, что будем менять на клавиатуре, либо напиши 'Назад', вернуться", reply_markup=board_5)
Exemple #5
0
async def delete(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    if text.isdigit():
        code = int(text) - 1
        #проверка по id
        delete = adm_collection.find({}, {'_id': 0}).skip(code).limit(1)
        full = db_list(delete)
        user_id = msg.from_user.id
        if len(full[0]) > 7:
            if full[0][7] != str(user_id):
                await bot.send_message(
                    msg.from_user.id,
                    'Редактирование сейчас недоступно, выберите другого человека',
                    reply_markup=board_4)
                return
        else:
            new_doc = {'admin_id': f'{user_id}'}
            adm_collection.update_one({'doljname': full[0][0]},
                                      {"$set": new_doc})
        adm_collection.remove({'doljname': full[0][0]})
        await state.set_state(States.ADMIN)
        await bot.send_message(
            msg.from_user.id,
            "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать",
            reply_markup=board_3)
Exemple #6
0
async def admin(msg: types.Message, state: FSMContext):
    text = msg.text
    user_id = msg.from_user.id
    dolj = ''
    if text == 'Создать':
        if dolj == '':
            await state.set_state(States.DOLJ)
            await bot.send_message(msg.from_user.id, "Введи должность:" )
            return
    elif text == 'Изменить':
        board_4 = create_reply_keyboard()
        await state.set_state(States.CHANGE)
        js = adm_collection.find({}, {'doljname' : 1, '_id' : 0})
        full = db_list(js)
        g = 1
        full_text = ''
        for elem in full:
            for i in elem:
                full_text += f'{g}' + '. ' + i + '\n'
                g += 1
        await bot.send_message(msg.from_user.id, full_text)
        await bot.send_message(msg.from_user.id, "Это весь список, кого будем редактировать?", reply_markup=board_4)
    elif text == 'Удалить':
        board_4 = create_reply_keyboard()
        await state.set_state(States.DELETE)
        js = adm_collection.find({}, {'doljname' : 1, '_id' : 0})
        full = db_list(js)
        g = 1
        full_text = ''
        for elem in full:
            for i in elem:
                full_text += f'{g}' + '. ' + i + '\n'
                g += 1
        await bot.send_message(msg.from_user.id, full_text)
        await bot.send_message(msg.from_user.id, "Это весь список, кого будем удалять?", reply_markup=board_4)
    elif text == 'Сохранить':
        new_collection.remove({})
        docs = adm_collection.find({},{'_id' : 0})
        full = []
        for doc in docs:
            if 'admin_id' in doc:
                if doc['admin_id'] == str(user_id):
                    adm_collection.update_one({'doljname' : doc['doljname']}, {"$unset": {'admin_id' : 1}})
                doc.pop('admin_id')
            full.append(doc)
        new_collection.insert_many(full)
        await bot.send_message(msg.from_user.id, "Все изменения сохранены", reply_markup=ReplyKeyboardRemove())
Exemple #7
0
async def echo(msg: types.Message, state: FSMContext):
    text = msg.text
    if text == 'Полная':
        js = new_collection.find({}, {'_id': 0})
        full = db_list(js)
        for elem in full:
            full_text = ''
            for i in elem:
                full_text += i + '\n'
            await bot.send_message(msg.from_user.id, full_text)
    elif text == 'Фио':
        js = new_collection.find({}, {
            'doljname': 1,
            'Fname': 1,
            'Name': 1,
            'Oname': 1,
            '_id': 0
        })
        full = db_list(js)
        for elem in full:
            full_text = []
            for i in elem:
                full_text.append(i)
            full_text.insert(1, '-')
            full_text = ' '.join(full_text)
            await bot.send_message(msg.from_user.id, full_text)
    elif text.isdigit():
        js = new_collection.find({}, {'_id': 0})
        full = db_list(js)
        code = int(text)
        full_text = ''
        for i in range(len(full)):
            if code == i:
                for g in full[i]:
                    full_text += g + '\n'
                await bot.send_message(msg.from_user.id, full_text)
    elif text == PASSWORD:
        await state.set_state(States.ADMIN)
        await bot.send_message(msg.from_user.id,
                               "Админь",
                               reply_markup=board_3)
    else:
        await bot.send_message(msg.from_user.id, 'Я не знаю таких слов')
Exemple #8
0
async def process_callback_kb1btn1(callback_query: types.CallbackQuery):
    js = new_collection.find({}, { '_id' : 0})
    full = db_list(js)
    code = callback_query.data[-1]
    if  code.isdigit():
        code = int(code)
        full_text = ''
        for i in range(len(full)):
            if code == i:
                for g in full[i]:
                    full_text += g + '\n'
                await bot.send_message(callback_query.from_user.id, full_text)
Exemple #9
0
async def change_room(msg: types.Message, state: FSMContext):
    text = msg.text
    key_list = ['doljname', 'Fname', 'Name', 'Oname', 'Room', 'Phone', 'Mail']
    await state.set_state(States.CHANGE)
    data = await state.get_data()
    code = int(data['code'])
    num = int(data['text'])
    change = adm_collection.find({}, {'_id' : 0, 'edited': 0}).skip(code-1).limit(1)
    full = db_list(change)
    new_doc = {f'{key_list[num]}' : text, 'edited': '1'}
    adm_collection.update_one({'doljname' : full[0][0]}, {"$set": new_doc})
    await state.set_state(States.ADMIN)
    await bot.send_message(msg.chat.id, "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать", reply_markup=board_3)
Exemple #10
0
async def dolj(msg: types.Message, state: FSMContext):
    dolj = msg.text                             #получаем текст из сообщения
    if dolj.isalpha(): 
        change = adm_collection.find({}, {'_id' : 0, 'edited': 0})
        full = db_list(change)
        for i in range(len(full)):
            if dolj in full[i]:
                await bot.send_message(msg.chat.id, 'Руководитель с такой должностью уже существует')
                return
        await state.set_state(States.ADMIN)     #смена состояния на админку
        await state.update_data(doljname=dolj)  #привязка текущей инфы к состоянию
        await state.set_state(States.FIO)       #смена состояния на следующее
        await bot.send_message(msg.chat.id, 'Введи фамилию, имя и отчество через пробелы')
    else:
        await bot.send_message(msg.chat.id, 'Неверный формат')
Exemple #11
0
async def delete(msg: types.Message, state: FSMContext):
    text = msg.text
    board_4 = create_reply_keyboard()
    if text.isdigit():
        code = int(text) - 1
        delete = adm_collection.find({}, {
            '_id': 0,
            'edited': 0
        }).skip(code).limit(1)
        full = db_list(delete)
        user_id = msg.from_user.id
        if len(full) < 1:  #проверка на существования такого номера в коллекции
            full_text = num_list()
            await bot.send_message(msg.chat.id, full_text)
            await bot.send_message(msg.chat.id,
                                   "Выбери кого удалить клавиатуре!",
                                   reply_markup=board_4)
            return
        elif len(full[0]) > 7:  #проверка admin_id
            if full[0][7] != str(user_id):
                await bot.send_message(
                    msg.chat.id,
                    'Редактирование сейчас недоступно, выберите другого человека',
                    reply_markup=board_4)
                return
        else:
            new_doc = {'admin_id': f'{user_id}'}
            old_doc = {
                'doljname': full[0][0],
                'Fname': full[0][1],
                'Name': full[0][2],
                'Oname': full[0][3],
                'Room': full[0][4],
                'Phone': full[0][5],
                'Mail': full[0][6]
            }
            adm_collection.update_one(old_doc, {"$set": new_doc})
            adm_collection.remove(old_doc)  #удаление документа
        await state.set_state(States.ADMIN)
        await bot.send_message(
            msg.chat.id,
            "Если это все, что ты хотел - жми 'Сохранить', ну или выбирай, что будем делать",
            reply_markup=board_3)