Beispiel #1
0
def menu(message=None, id=None):

    if not id:
        id = str(message.chat.id)

    base = sqlite3.connect('base.db')
    cursor = base.cursor()
    right_triangle = u"\U000025B6"
    left_triangle = u"\U000025C0"
    schedule_smile = u"\U0001F4DA"
    notif_set_smile = u"\U0001F514"
    dd_cal_smile = u"\U0001F4C5"

    try:
        buttons = [{
            f"{schedule_smile} Мое расписание": "schedule"
        }, {
            f"{notif_set_smile} Настройки уведомлений о дедлайнах":
            "notif_set"
        }, {
            f"{dd_cal_smile} Календарь дедлайнов": "deadlines"
        }]
        kb_menu = keyboa_maker(items=buttons)
        group_id = cursor.execute("select group_id from students where id=?",
                                  (id, )).fetchall()[0][0]
        group_name = cursor.execute("select name from groups where id=?",
                                    (group_id, )).fetchall()[0][0]
        bot.send_message(
            id, f"{right_triangle}{right_triangle}{right_triangle}ГЛАВНОЕ МЕНЮ"
            f"{left_triangle}{left_triangle}{left_triangle}\n"
            f"Ты принадлежишь к группе {group_name}\nВыбери один из пунктов меню",
            reply_markup=kb_menu)
    except Exception as e:
        ErrorLog(e)
Beispiel #2
0
def change_group(message):
    global admin_id
    id = str(message.chat.id)

    if id != admin_id:
        buttons = [[{"Да": "changeTrue"}, {"Нет": "changeFalse"}]]
        kb_menu = keyboa_maker(items=buttons)
        bot.send_message(chat_id=id,
                         reply_markup=kb_menu,
                         text="Ты уверен, что хочешь изменить группу?")
Beispiel #3
0
def set_notif_deadline(id):
    base = sqlite3.connect('base.db')
    cursor = base.cursor()

    try:
        notif_deadline = cursor.execute(
            'select notif_deadline from students where id=?',
            (id, )).fetchall()[0][0]
        buttons = [[{
            '1 день': 'set_notif_deadline 1'
        }, {
            '2 дня': 'set_notif_deadline 2'
        }, {
            '3 дня': 'set_notif_deadline 3'
        }],
                   [{
                       '4 дня': 'set_notif_deadline 4'
                   }, {
                       '5 дней': 'set_notif_deadline 5'
                   }],
                   [{
                       '6 дней': 'set_notif_deadline 6'
                   }, {
                       '7 дней': 'set_notif_deadline 7'
                   }], {
                       'Вернуться в меню': 'menu'
                   }]
        kb_menu = keyboa_maker(items=buttons)

        if notif_deadline:
            if notif_deadline == 1:
                bot.send_message(
                    id,
                    f'Я напомню о сроках сдачи задания за {notif_deadline} '
                    f'день до крайнего срока.\nЕсли хочешь изменить, то выбери новое значение',
                    reply_markup=kb_menu)
            elif notif_deadline in [2, 3, 4]:
                bot.send_message(
                    id,
                    f'Я напомню о сроках сдачи задания за {notif_deadline} '
                    f'дня до крайнего срока.\nЕсли хочешь изменить, то выбери новое значение',
                    reply_markup=kb_menu)
            else:
                bot.send_message(
                    id,
                    f'Я напомню о сроках сдачи задания за {notif_deadline} '
                    f'дней до крайнего срока.\nЕсли хочешь изменить, то выбери новое значение',
                    reply_markup=kb_menu)
        else:
            bot.send_message(
                id,
                'Выбери, за сколько дней мне напоминать о приближении срока сдачи задания?',
                reply_markup=kb_menu)
    except Exception as e:
        ErrorLog(e)
Beispiel #4
0
def start_bot(message):
    user_kb = types.ReplyKeyboardMarkup(True)
    user_kb.row('start', 'exit').add()
    bot.send_message(message.from_user.id, reply_markup=user_kb, text='⛹️‍♂️⛹️‍♀️')
    if message.text == 'start':
        key = keyboa_maker(items=TEAM_NBA, copy_text_to_callback=True, items_in_row=3)
        bot.send_message(message.from_user.id, reply_markup=key, text=MSG_GREETING)
    if message.text == 'exit':
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        url_button = types.InlineKeyboardButton(text="URL", url=URL_BR)
        keyboard.add(url_button)
        bot.send_message(message.from_user.id, MSG_URL, reply_markup=keyboard)
Beispiel #5
0
def AdvGeoCode(message):
    current_user = user_dict.get(message.chat.id)
    if current_user is not None:
        if not chek(message, 'oh c\'mon just answer as if you were normal guy', AdvGeoCode, 'text'):
            return
        current_user.city = message.text
        try:
            list_txt = "Выберите Свой город из списка пож:"
            list_cities = keyboa_maker(items=getCoords(current_user.city))
            current_user.step = 0
            msg = bot.send_message(message.chat.id, list_txt, reply_markup=list_cities)
            bot.register_next_step_handler(msg, Coords)
        except ValueError:
            no_city_txt = 'Похоже, я не могу найти ТАКОЕ \nПопробуй по-другому пож'
            msg = bot.send_message(message.chat.id, no_city_txt, reply_markup=types.ReplyKeyboardRemove())
            bot.register_next_step_handler(msg, AdvGeoCode)
    else:
        to_begin(message.chat.id, message.from_user.first_name)
Beispiel #6
0
from keyboa import keyboa_maker
from fieldnames import color_names

colors = [{color: 'color_' + color} for color in color_names + ['ВЫХОД']]
keyboard_colors = keyboa_maker(items=colors,
                               copy_text_to_callback=True,
                               items_in_row=3)

occupations = [{
    'Школьник': 'occupation_kid'
}, {
    'Студент': 'occupation_student'
}, {
    'Работаю': 'occupation_worker'
}, {
    'Пенсионер': 'occupation_retiree'
}, {
    'Что-то еще': 'occupation_unknown'
}]
keyboard_occupations = keyboa_maker(items=occupations)

answers = [{
    'Ответить сейчас': 'answer_now'
}, {
    'Ответить позже': 'answer_later'
}, {
    'Игнорировать': 'answer_never'
}]
keyboard_answers = keyboa_maker(items=answers)

personal_info = [{
def create_keyboard(arr, flag=''):
    # генерация кнопок из списка типа [['txt', 'id']....]
    return keyboa_maker(return_keyboard(arr, flag))
Beispiel #8
0
def create_top_neghborhoods(buttons: list):
    return kb.keyboa_maker(buttons,
                           copy_text_to_callback=True,
                           front_marker='sa_')
Beispiel #9
0
import keyboa as kb
from telebot import types
from .text_data import *


def create_top_neghborhoods(buttons: list):
    return kb.keyboa_maker(buttons,
                           copy_text_to_callback=True,
                           front_marker='sa_')


start_keyboard = kb.keyboa_maker(["Let's start!", "About us"],
                                 copy_text_to_callback=True)
rent_buy = kb.keyboa_maker(['Rent', 'Buy'],
                           copy_text_to_callback=True,
                           items_in_row=2)
rent = kb.keyboa_maker(["Rent"], copy_text_to_callback=True)
buy = kb.keyboa_maker(["Buy"], copy_text_to_callback=True)
params = kb.keyboa_maker(EDIT_PARAMS,
                         copy_text_to_callback=True,
                         front_marker='edit_')
done_btn = kb.keyboa_maker(START_SEARCHING, copy_text_to_callback=True)
params_with_done = kb.keyboa_combiner(keyboards=(params, done_btn))
rental_types = kb.keyboa_maker(TYPES_OF_RENTAL,
                               copy_text_to_callback=True,
                               front_marker='tr_')
rooms_count = kb.keyboa_maker(COUNT_OF_ROOMS,
                              copy_text_to_callback=True,
                              front_marker='cr_')
price_range = kb.keyboa_maker(PRICE,
                              copy_text_to_callback=True,
Beispiel #10
0
def deadline_calendar(id):
    flame_smile = u'\U0001F525'
    smile_skull = u'\U0001F480'
    base = sqlite3.connect('base.db')
    cursor = base.cursor()
    year = date.today().strftime("%Y")
    month = date.today().strftime("%m")
    day_count = calendar.Calendar().monthdays2calendar(int(year), int(month))
    group_id = cursor.execute("select group_id from students where id=?",
                              (id, )).fetchall()[0][0]
    tasks_id = cursor.execute(
        "select task_id from task_group where group_id=?",
        (group_id, )).fetchall()
    dd_dates = []

    for i in tasks_id:
        db_date = cursor.execute("select deadline from tasks where task_id=?",
                                 (i[0], )).fetchall()[0][0]

        if db_date[5:] not in dd_dates:
            dd_dates.append(db_date[5:])

    buttons = []

    for i in range(len(day_count)):
        buttons.append([])

        for j in range(len(day_count[i])):

            if day_count[i][j][0] == 0:
                buttons[i].append({" ": "EmptyBtn"})
            else:
                tempdate = f"{month}-{day_count[i][j][0]}"

                if tempdate in dd_dates:

                    if len(str(day_count[i][j][0])) == 1:
                        buttons[i].append({
                            str(day_count[i][j][0]) + smile_skull:
                            f"DeadBtn0{day_count[i][j][0]}"
                        })
                    else:
                        buttons[i].append({
                            str(day_count[i][j][0]) + smile_skull:
                            f"DeadBtn{day_count[i][j][0]}"
                        })

                else:
                    buttons[i].append({
                        str(day_count[i][j][0]):
                        f"CalBtn{day_count[i][j][0]}"
                    })

    menu_button = [{"Вернуться в меню": "menu"}]
    kb_calendar = keyboa_maker(items=buttons)
    kb_menu = keyboa_maker(items=menu_button)
    kb = keyboa_combiner(keyboards=(kb_calendar, kb_menu))
    bot.send_message(
        chat_id=id,
        text=f"{flame_smile}Это календарь дедлайнов{flame_smile}"
        f"\n{smile_skull} Черепками отмечены дни, до которых надо сдать задачи."
        f"\nНажав на число с черепком ты увидишь, какую именно задачу тебе надо "
        f"сдать в этот день",
        reply_markup=kb)
def search_aud(message, bot, storage, tz, last_msg=None):
    """Регистрация преподавателя"""
    global aud_list
    chat_id = message.chat.id
    message_id = message.message_id
    data = message
    message = message.text
    all_found_aud = []
    all_results = []
    prep_list = []
    page = 0

    if data.content_type == 'sticker':
        message = ''

    if last_msg:
        bot.delete_message(data.chat.id, data.message_id - 1)

    if ('На текущую неделю' == message or 'На следующую неделю' == message):
        return

    if not storage.get_schedule_aud(message) and len(message.replace(' ',
                                                                     '')) < 15:
        # Отправляем запросы в базу посимвольно
        for item in message:
            # Получаем все результаты запроса на каждый символ
            request_item_all = storage.get_schedule_aud(item)
            # Проходим по каждому результату запроса одного символа
            for i in range(len(request_item_all)):
                # Обращаемся к результатам у которых есть ключ "aud"
                request_item = request_item_all[i]['aud']
                # Записывем все совпадения (Значения ключа "aud")
                prep_list.append(request_item)
                request_item = []

            request_item_all = []

        # Выделение наиболее повторяющихся элементов(а). Фактически результат запроса пользователя.
        qty_most_common = 0
        prep_list_set = set(prep_list)
        for item in prep_list_set:
            qty = prep_list.count(item)
            if qty > qty_most_common:
                qty_most_common = qty
                # Переменная с результатом сортировки
            if message.replace(' ', '').lower() in item.replace('-',
                                                                '').lower():
                all_results.append(item.lower())

    if storage.get_schedule_aud(message) and not all_results:
        # Результат запроса по аудам
        request_aud = storage.get_schedule_aud(message)
        # Циклы нужны для общего поиска. Здесь мы удаляем старые ключи в обоих реквестах и создаём один общий ключ, как для групп, так и для преподов
        for i in request_aud:
            i['search_aud'] = i.pop('aud')
        # Записываем слово, которое ищем
        request_word = message

        last_request = request_aud[-1]
        # Эти циклы записывают группы и преподов в нижнем регистре для удобной работы с ними
        for i in request_aud:
            all_found_aud.append(i['search_aud'].lower())
        # Формируем полный багаж для пользователя
        list_search = [page, request_word, all_found_aud]
        # Записываем все данные под ключом пользователя
        aud_list[chat_id] = list_search
        # Выводим результат поиска с клавиатурой (кливиатур формируется по поисковому запросу)
        if len(request_aud) > 10:
            requests = request_aud[:10 * (page + 1)]
            more_than_10 = True
            msg = bot.send_message(
                chat_id=chat_id,
                text='Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group_aud(
                    last_request=last_request,
                    page=page,
                    more_than_10=more_than_10,
                    requests=requests))
            bot.register_next_step_handler(msg,
                                           search_aud,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)

        else:
            msg = bot.send_message(
                chat_id=chat_id,
                text='Результат поиска',
                reply_markup=keyboards.make_keyboard_search_group_aud(
                    last_request=last_request,
                    page=page,
                    more_than_10=False,
                    requests=request_aud))
            bot.register_next_step_handler(msg,
                                           search_aud,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)

    if all_results and aud_list[chat_id] == []:
        all_found_aud = all_results
        request_word = data
        list_search = [page, request_word, all_found_aud]
        aud_list[chat_id] = list_search
        kb_all_results = keyboa_maker(items=all_found_aud,
                                      copy_text_to_callback=True,
                                      items_in_row=3)

        msg = bot.send_message(chat_id=chat_id,
                               reply_markup=kb_all_results,
                               text="Результат поиска")

        bot.register_next_step_handler(msg,
                                       search_aud,
                                       bot=bot,
                                       storage=storage,
                                       tz=tz,
                                       last_msg=msg)

    else:
        if len(aud_list[chat_id]) == 3:
            pass
        elif all_results:
            kb_all_results = keyboa_maker(items=all_found_aud,
                                          copy_text_to_callback=True,
                                          items_in_row=3)
            bot.send_message(chat_id=chat_id,
                             reply_markup=kb_all_results,
                             text="Результат поиска")
        else:
            msg = bot.send_message(
                chat_id=chat_id,
                text='Проверьте правильность ввода 😕',
                reply_markup=keyboards.make_keyboard_main_menu())
            bot.register_next_step_handler(msg,
                                           search_aud,
                                           bot=bot,
                                           storage=storage,
                                           tz=tz,
                                           last_msg=msg)
            return

    return
Beispiel #12
0
import keyboa

START_TEST = keyboa.keyboa_maker(['Пройти тест'], copy_text_to_callback=True)
ANOTHER_TEST = keyboa.keyboa_maker(['Пройти другой тест'],
                                   copy_text_to_callback=True)
PLUS_MINUS = keyboa.keyboa_maker(['+', '-'],
                                 items_in_row=2,
                                 copy_text_to_callback=True,
                                 front_marker='ans_')
Beispiel #13
0
    
except FileNotFoundError:
    with open('vk_exist.csv','w',newline='') as f:
        csv_writer=csv.writer(f)
        csv_writer.writerow(['link', 'name'])

                                                    #reply_markups
main_menu = tp.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=1)
main_menu.add('📖 Random page')


db = [
  "Send to DB"
]

callback = keyboa_maker(items=db, copy_text_to_callback=True)
db_ok = [
  "THANKS"
]
callback_ok = keyboa_maker(items=db_ok, copy_text_to_callback=True)

                                                    #main_script
def rand_page(user_id):
    link = 'https://vk.com/id'
    url = str(random.randint(1, 1000000000))
    not_created = []
    
    only_content = bs4.SoupStrainer("div", id='content')
    r = requests.get(link+url, stream=True, headers={'User-Agent': UserAgent().chrome})
    soup = bs4.BeautifulSoup(r.text, "lxml", parse_only=only_content)