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)
def event_delete(call): telebot.keyboard = InlineKeyboardMarkup() event_id = call.data[6:] user_id = str(call.message.chat.id) try: chosen_event = Events.get(Events.id == event_id) if chosen_event.members.find(str(user_id)) != -1: chosen_event.members = chosen_event.members.replace( str(user_id), ' ') chosen_event.members = chosen_event.members.replace(' ', ' ') chosen_event.count -= 1 telebot.keyboard.add( InlineKeyboardButton(text='Подробнее...', callback_data='info_' + str(chosen_event.id))) bot.send_message( int(chosen_event.creator), text='✉К сожалению, ваше мероприятие покинул человек!', reply_markup=telebot.keyboard) chosen_event.save() else: bot.answer_callback_query(call.id, text='Вы уже покинули это мероприятие') except Events.DoesNotExist: bot.send_message(call.message.chat.id, text='Мероприятия не существует')
def event_info(call): try: event_id = call.data[5:] chosen_event = Events.get(Events.id == event_id) admin = Users.get(Users.id == chosen_event.creator) telebot.keyboard = InlineKeyboardMarkup() url = InlineKeyboardButton(text="Адрес", url="https://www.google.ru/maps/place/" + chosen_event.address) telebot.keyboard.add(url) text = '📄 Описание: {}\n⌚ Время: {}\n📅 Дата: {}'.format( chosen_event.text, str(chosen_event.time), str(chosen_event.date)) text1 = '🙂 Создатель: {}\n{}\n📱 Телефон: {}\n📊 Репутация: {}'.format( admin.first_name, admin.last_name, admin.telephone, str(admin.reputation)) bot.send_message(call.message.chat.id, text=text, reply_markup=telebot.keyboard) bot.send_message(call.message.chat.id, text=text1) text2 = 'Участники:' + '\n' for members in chosen_event.members.split(): chosen_user = Users.get(Users.id == int(members)) text2 += '🙂 {} {}\n📱 Телефон: {}'.format(chosen_user.first_name, chosen_user.last_name, chosen_user.telephone) if len(text2) > 11: bot.send_message(call.message.chat.id, text=text2) except Events.DoesNotExist or Users.DoesNotExist: pass
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
def event_delete(call): try: event_id = call.data[4:] chosen_event = Events.get(Events.id == event_id) for i in list(chosen_event.members.split()): bot.send_message( int(i), text='✉К сожалению создатель удалил мероприятие "' + chosen_event.text + '"') bot.send_message(chosen_event.creator, text='✉Мероприятие успешно удалено') chosen_event.delete_instance() chosen_event.save() except Events.DoesNotExist: pass
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
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='Произошла ошибка при создании мероприятия')
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)
def event_create_step1(msg): """ Функция записывает категорию, выбранную пользователем и создаёт новое поле в таблице Events для дальнейшего заполнения. """ get_calendar(msg) bot.send_message( msg.chat.id, text= 'Ваша категория добавлена, теперь напишите краткое описание вашего мероприятия', reply_markup=telebot.keyboard) chosen_event = Events.create(id=get_id(), creator=msg.chat.id, date=datetime.date(1, 1, 1), time=datetime.time(0, 0, 0), text='NULL', count=-1, fun=msg.text, address='NULL', members='', status=1) chosen_event.save()
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()
def main(self): # Chama a função start que traz o roteiro inicial self.start() print(" Bem vindo, vamos começar o jogo! ") # Roteiro do jogo até a grande final while len(self.cast) > 3: self.immunezed = False self.leaderVote = False self.othersVote = False self.thirdVote = False # cria a instância da prova do lider do modelo provas self.leaderProve = Prove(self.cast) print("________________________________________________________") # executa a prova do lider armazenando o lider self.leader = self.leaderProve.leader() # cria a instância da prova do anjo do modelo provas sleep(3) self.angelProve = Prove(self.cast) # executa a prova do anjo armazenando o anjo self.angel = self.angelProve.angel() # Cria a instância de eliminações self.elimination = Elimination(self.cast, self.leader, self.angel) # Esse método irá trazer o imunizado if len(self.cast) > 4: while self.immunezed == False: self.immunezed = self.elimination.immunezed() # A seguir executa-se métodos que iram gerar os votos e emparedados while self.leaderVote == False: self.leaderVote = self.elimination.leadervote() while self.othersVote == False: self.othersVote = self.elimination.othersvote() while self.thirdVote == False: self.thirdVote = self.elimination.thirdperson() # Exibição ao player dos emparedados e imunizado print("----------------------------------------------------------") print(f'Vamos montar o paredão dessa semana!') print("----------------------------------------------------------") sleep(3) print(f"O anjo imunizou {self.immunezed.name}" ) if self.immunezed is not False else "" sleep(1) print(f"O voto do lider foi em: {self.leaderVote.name}") sleep(1) print( f"O grupo no confessionario votou em: {self.othersVote.name}") sleep(1) print(f"O terceiro a ir ao paredão é: {self.thirdVote.name}") sleep(1) print("----------------------------------------------------------") # Intervenção divina? greatWall = [self.leaderVote, self.othersVote, self.thirdVote] self.elimination.intervention(greatWall) # Método para eliminação print(f"Momento de tensão no sofá") sleep(1) print( f"Batimentos cardiacos: {self.leaderVote.name}: {randint(80, 140)}, {self.othersVote.name}: {randint(80, 140)}, {self.thirdVote.name}: {randint(80, 140)}" ) sleep(2) self.elimination.toeliminate() sleep(2) print("O tempo continua e vamos para mais uma semana") sleep(1) print("...") print( "Listamos para você os principais acontecimentos da semana: ") event = Events() event.eventsAct(self.cast) sleep(3) print("Na casa restam apenas mais 3.") print("Isso significa que chegamos na grande final!") finalists = [] for i in self.cast: finalists.append(i) final = Final(self.cast) final.theFinal() print("Obrigado por jogar nosso joguinho") print("Desenvolvido por BlackHAts")
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Не забудьте поставить оценку приглашённым для рейтинга.'.
def event_call(call): if call.data[0:9] == 'ev_invite': try: chosen_user = Users.get(Users.id == call.message.chat.id) chosen_event = Events.get(Events.id == int(call.data[9:])) if chosen_event.members.find(str(call.message.chat.id)) == -1: telebot.keyboard = InlineKeyboardMarkup() telebot.keyboard.add( InlineKeyboardButton(text='Принять', callback_data='ev_accept' + str(chosen_event.id) + ':' + str(call.message.chat.id))) telebot.keyboard.add( InlineKeyboardButton(text='Отклонить', callback_data='ev_reject' + str(chosen_event.id) + ':' + str(call.message.chat.id))) bot.send_message( chosen_event.creator, text='✉\nНа ваше мероприятие записался человек!\n🙂 {} {}\n' '📊 Репутация: {}\n📱 Телефон: {}'.format( chosen_user.first_name, chosen_user.last_name, str(chosen_user.reputation), chosen_user.telephone), reply_markup=telebot.keyboard) bot.edit_message_text("Ваша заявка отправлена", call.from_user.id, call.message.message_id) except Users.DoesNotExist or Events.DoesNotExist: bot.send_message( call.message.chat.id, text="К сожалению, мероприятия больше не существует") elif call.data[0:9] == 'ev_accept': event_id = int(call.data[9:call.data.find(':')]) user_id = int(call.data[call.data.find(':') + 1:]) chosen_event = Events.get(Events.id == event_id) if chosen_event.members.find(str(user_id)) == -1: telebot.keyboard = InlineKeyboardMarkup() url = InlineKeyboardButton( text="Адрес", url="https://www.google.ru/maps/place/" + chosen_event.address) telebot.keyboard.add(url) bot.send_message( user_id, text= '✉\nВаша заявка одобрена!\n⌚ Время: {}\n📅 Дата: {}\n📄 Описание: {}' .format(str(chosen_event.time), str(chosen_event.date), chosen_event.text), reply_markup=telebot.keyboard) chosen_event.count += 1 chosen_event.members += str(user_id) + ' ' chosen_event.save() bot.send_message( chosen_event.creator, text= 'Пользователю отправлена полная информация о мероприятии...') else: bot.send_message( chosen_event.creator, text='Этот пользователь уже приглашён на мероприятие') elif call.data[0:9] == 'ev_reject': event_id = int(call.data[9:call.data.find(':')]) creator = int(call.data[call.data.find(':') + 1:]) chosen_event = Events.get(Events.id == event_id) bot.send_message(creator, text='✉\nВаша заявка на мероприятие: "' + chosen_event.text + '" отклонена!')