Exemplo n.º 1
0
def event_list(msg):
    """

    Функция извлекает из базы данных все мероприятия, в которых
    пользователь является администратором или участником.

    """
    events = Events.select().where((Events.creator == msg.chat.id)
                                   & (Events.status == 0))
    if len(events) > 0:
        bot.send_message(msg.chat.id,
                         text='Ваши мероприятия:',
                         reply_markup=telebot.keyboard)
    count_admin = 1
    for i in events:
        event_information(msg, i, count_admin, 1)
        count_admin += 1
    count_member = 1
    for i in Events.select():
        if i.members.find(str(msg.chat.id)) != -1:
            if count_member == 1:
                bot.send_message(msg.chat.id,
                                 text='Мероприятия, на которые вы идёте:',
                                 reply_markup=telebot.keyboard)
            event_information(msg, i, count_member, 0)
            count_member += 1
    if count_admin == 1 and count_member == 1:
        bot.send_message(msg.chat.id,
                         text='У вас нет активных мероприятий',
                         reply_markup=telebot.keyboard)
Exemplo n.º 2
0
def cancel(msg):
    telebot.keyboard = ReplyKeyboardRemove()
    bot.send_message(msg.chat.id,
                     text='Действие отменено',
                     reply_markup=telebot.keyboard)
    telebot.action[msg.chat.id] = 'answer'
    try:
        chosen_event = Events.select().where(Events.count == -1).get()
        chosen_event.delete_instance()
        chosen_event.save()
    except Events.DoesNotExist:
        return
Exemplo n.º 3
0
def get_id():
    """

    Функция определяет свободный id при создании
    нового мероприятия.

    """
    try:
        user_id = 0
        for i in Events.select():
            if i.id > user_id:
                user_id = i.id
        user_id += 1
    except Events.DoesNotExist:
        user_id = 0
    return user_id
Exemplo n.º 4
0
def event_create_step2(msg):
    """

    Функция определяет по статусу, на какой стадии
    находится создание мероприятия.
    Статус "1" - заполненяется ячейка категории мероприятия и описания
    Статус "2" - заполненяется ячейка времени и даты мероприятия
    Статус "3" - заполняется геолокация мероприятия
    Статус "4" - заполняется ячейка количества человек, производится рассылка
    приглашений, статус мероприятия становится "Успешно создано"


    """
    try:
        chosen_event = Events.select().where(
            (Events.count == -1) & (Events.creator == msg.chat.id)).get()
        if chosen_event.status == 1:
            if telebot.date == datetime.date(1, 1, 1):
                bot.send_message(msg.chat.id, text='Ты забыл ввести дату!')
                return
            chosen_event.date = telebot.date
            chosen_event.text = msg.text
            bot.send_message(msg.chat.id,
                             text='Укажите время мероприятия (формат HH:MM)')
            chosen_event.status = 2
            chosen_event.save()
        elif chosen_event.status == 2:
            try:
                chosen_event.time = datetime.time(int(msg.text[0:2]),
                                                  int(msg.text[3:5]))
                bot.send_message(
                    msg.chat.id,
                    text='Отправьте геолокацию с адресом мероприятия')
                chosen_event.status = 3
                chosen_event.save()
            except ValueError:
                bot.send_message(msg.chat.id,
                                 text='Проверь правильность ввода времени')
    except Events.DoesNotExist:
        bot.send_message(msg.chat.id,
                         text='Произошла ошибка при создании мероприятия')
Exemplo n.º 5
0
def location(msg):
    if telebot.action[msg.chat.id] != 'event_create':
        telebot.keyboard = ReplyKeyboardRemove()
        user = Users.get(Users.id == msg.chat.id)
        user.latitude = msg.location.latitude
        user.longitude = msg.location.longitude
        user.save()
        bot.send_message(msg.chat.id,
                         text='Записал твою геолокацию, спасибо!',
                         reply_markup=telebot.keyboard)
        weather(msg, user.latitude, user.longitude)
    else:
        chosen_event = Events.select().where(
            (Events.count == -1) & (Events.creator == msg.chat.id)).get()
        chosen_event.address = str(msg.location.latitude) + ',' + str(
            msg.location.longitude)
        chosen_event.status = 4
        chosen_event.count = 0
        chosen_event.save()
        telebot.action[msg.chat.id] = 'answer'
        telebot.date = datetime.datetime(1, 1, 1)
        bot.send_message(msg.chat.id, text='Мероприятие успешно создано!')
        event_invite(msg)
Exemplo n.º 6
0
def event_invite(msg):
    """

    Функция осуществляет рассылку всем пользователям,
    у которых выбранна данная категория мероприятия.

    """
    chosen_event = Events.select().where((Events.creator == msg.chat.id)
                                         & (Events.status == 4)).get()
    for i in Users.select():
        if msg.chat.id != i.id and i.fun.find(chosen_event.fun) + 1:
            telebot.keyboard = InlineKeyboardMarkup()
            telebot.keyboard.add(
                InlineKeyboardButton(text='Хочу пойти',
                                     callback_data='ev_invite' +
                                     str(chosen_event.id)))
            bot.send_message(i.id,
                             text='✉\nНовое мероприятие! ' + '\n' +
                             '⌚Время: ' + str(chosen_event.time) + '\n' +
                             '📅Дата: ' + str(chosen_event.date) + '\n' +
                             '📄Описание:' + chosen_event.text,
                             reply_markup=telebot.keyboard)
    chosen_event.status = 0
    chosen_event.save()
Exemplo n.º 7
0
         i.delete_instance()
         i.save()
 except Reminder.DoesNotExist:
     pass
 try:
     user = Users.select().where((Users.weather == 1) & (
         Users.weather_time == datetime.time(time1.hour, time1.minute)))
     for i in user:
         bot.send_message(i.id,
                          text=telebot.weather_text(i.latitude,
                                                    i.longitude))
 except Users.DoesNotExist:
     pass
 try:
     event = Events.select().where(
         (Events.time == datetime.time(time1.hour, time1.minute))
         & (Events.date == datetime.date(date.year, date.month, date.day))
         & (Events.status == 0))
     for i in event:  # i - выбранное мероприятие
         cut = i.address.find(",")
         bot.send_message(int(i.creator),
                          text=telebot.weather_text(
                              float(i.address[:cut]),
                              float(i.address[cut + 1:])))
         i.status = -1
         i.save()
         cut = i.address.find(",")
         bot.send_message(
             int(i.creator),
             text=
             '✉\nВаше мероприятие "{}" началось! \nКоличество участников: {}'
             '\nНе забудьте поставить оценку приглашённым для рейтинга.'.