Пример #1
0
def ending():
    # TODO: Ending
    for player in Player.select().where(not Player.finish):
        bot.send_message(player.tg_id, config.game_over)
        player.time += timer.get_duration()
        player.save()
    msg = 'Final results:\n'
    for player in Player.select().order_by(Player.time.desc()):
        t = player.time
        msg += '{}: {} min {} sec\n'.format(player.name, int(t // 60), t % 60)
    bot.send_message(config.creatorID, msg)
    everyone(config.globalEnd)
Пример #2
0
def next_round():
    global currentRound
    for player in Player.select().where(Player.currentRound == currentRound):
        player.time += timer.get_duration()  # Maximal time
        player.currentRound += 1
        bot.send_message(player.tg_id, config.endingOfRound)
        if player.currentRound <= 9:
            bot.send_message(player.tg_id, config.nextKpName.format(
                config.kp_rus.get(config.kp[player.race - 1][player.currentRound],
                                  default=config.kp[player.race - 1][player.currentRound])))
        player.save()
        try:
            kp = User.get(User.role == Role.KP and User.challenge.round == player.round and User.challenge.name ==
                          config.kp[player.race - 1][player.currentRound])
            # kp = User.get(User.currentTeamName == player.name)
        except DoesNotExist:
            logger.critical("Can't find active kp for {} - @{}".format(player.name, player.username))
            bot.send_message(config.creatorID, "Can't find active kp for {} - @{}".format(player.name, player.username))
            kp = None
        if kp is not None:
            bot.send_message(kp.tg_id, 'Раунд закончился, пожалуйста введите комманду /add <num> чтобы добавить '
                                       'энергию команде. Если энергии не полагается введите /add 0')
    if currentRound < 9:
        for user_kp in User.select().where(User.role == Role.KP and User.currentTeamName == 'waiting'):
            user_kp.currentTeamName = set_next_team(user_kp, currentRound + 1)
            user_kp.save()
    currentRound += 1
    logger.info("Round {} has started".format(currentRound))
    if currentRound < 10:
        timer.start(next_round)
    else:
        everyone(config.startChanging)
        timer.set_duration(60*60)
        timer.start(ending)
Пример #3
0
def status_cmd(message):
    msg = 'Status:\n'
    for player in Player.select().order_by(Player.name):
        t = player.time
        msg += '{}: {} min {} sec\n'.format(player.name, int(t // 60), t % 60)
    bot.send_message(message.chat.id, msg)
    logger.info("<status> called by {}".format(message.from_user.username))
Пример #4
0
def set_next_team(kp, round):
    if round < 0 or round > 9:
        logger.error("Wrong round {} in <set_next_team>".format(round))
        return '-2'
    name = kp.challenge.name
    r = kp.challenge.round
    for player in Player.select().where(Player.round == r):
        if config.kp[player.race - 1][round] == name:
            return player.name
    logger.critical("Can't find next group for {} {} - @{}".format(name, r, kp.username))
    bot.send_message(config.creatorID, "Can't find next group for {} {} - @{}".format(
        name, r, kp.username
    ))
    return '-1'
Пример #5
0
def begin_cmd(message):
    # TODO: Beginning of the quest
    config.dump()
    autosave()
    global currentRound
    currentRound = 0
    timer.set_duration(default_duration)
    for player in Player.select():
        player.currentRound = 0
        player.save()
        bot.send_message(player.tg_id, config.nextKpName.format(
            config.kp_rus.get(config.kp[player.race - 1][0], default=config.kp[player.race - 1][0])))
    for kp in User.select().where(User.role == Role.KP):
        kp.currentTeamName = set_next_team(kp, 0)
        kp.save()
        bot.send_message(kp.tg_id, 'Текущая группа - {}'.format(kp.currentTeamName))
    timer.start(next_round)
    everyone('Приключение началось! Удачи!')
    logger.info('Quest has been started by @{}'.format(message.from_user.username))
Пример #6
0
def transfer_cmd(message):
    markup = types.ReplyKeyboardMarkup(row_width=1)
    for player in Player.select().where(Player.tg_id != message.chat.id).order_by(Player.name):
        markup.add(types.KeyboardButton(player.name))
    bot.send_message(message.chat.id, config.chooseGroupForTransfer, reply_markup=markup)
    bot.register_next_step_handler(message, transfer2)