def msg(bot, update): c_id = update.message.chat_id statistics.track(c_id, update.message) global msg, image, buttons msg = '' image = None buttons = None def rep(txt, btns=None, photo=None): global msg, image, buttons if len(msg) + len(txt) + 2 >= 4096: _reply(c_id, bot, msg, buttons, image) msg = '' image = None buttons = None msg += '\n\n' msg += txt if btns: buttons = btns if photo: image = photo usermanager.message(c_id, rep, update.message.text) if len(msg) > 0 or image: global updater _reply(c_id, bot, msg, buttons, image)
def start(bot, update): c_id = update.message.chat_id global msg, image, buttons msg = '' image = None buttons = None statistics.track(c_id, update.message, 'Start') def rep(txt, btns=None, photo=None): global msg, image, buttons if len(msg) + len(txt) + 2 >= 4096: reply(c_id, bot, msg, buttons, image) msg = '' image = None buttons = None msg += '\n\n' msg += txt if btns: buttons = btns if photo: image = photo username = '' try: username = bot.getChat(uid)['username'] except: pass usermanager.new_user(c_id, username if len(username) > 0 else None, rep) if len(msg) > 0 or image: reply(c_id, bot, msg, buttons, image)
def death(self, reply, reason=None): if self.state == 'room': room = roomloader.load_room(self.room[1], self.room[0], self) room.on_death(self, reply) reply(locale_manager.get('DEATH_PLACE').format(room.name)) self.dead = True self.state = '' self.update_leaderbord(reason) track_stats = { 'uid': self.uid, 'reason': reason, 'rooms_count': self.rooms_count, 'gold': self.gold, 'kills_count': self.monsters_killed, 'damage': self.get_damage(), 'defence': self.get_defence(), 'charisma': self.get_charisma(), 'mana_damage': self.get_mana_damage(), 'live_time': self.get_live_time() } statistics.track(self.uid, track_stats, 'Death') reply( locale_manager.get('DEAD_MESSAGE').format(self.monsters_killed, self.rooms_count), ['/start']) if 'save' in self.variables: self.recover(reply)
def death(self, reply, reason=None): if self.state == 'room': room = roomloader.load_room(self.room[1], self.room[0], self) room.on_death(self, reply) reply(locale_manager.get('DEATH_PLACE').format(room.name)) self.dead = True self.state = '' self.update_leaderbord(reason) track_stats = { 'uid': self.uid, 'reason': reason, 'rooms_count': self.rooms_count, 'gold': self.gold, 'kills_count': self.monsters_killed, 'damage': self.get_damage(), 'defence': self.get_defence(), 'charisma': self.get_charisma(), 'mana_damage': self.get_mana_damage(), 'live_time': self.get_live_time() } statistics.track(self.uid, track_stats, 'Death') reply(locale_manager.get('DEAD_MESSAGE').format(self.monsters_killed, self.rooms_count), [ '/start' ]) if 'save' in self.variables: self.recover(reply)
def setname(bot, update): txt = update.message.text if len(txt) > len('/setname'): statistics.track(update.message.chat_id, update.message, 'Setname') name = txt[len('/setname')+1:] usermanager.setname(update.message.chat_id, name) bot.sendMessage(update.message.chat_id, text='Ну хорошо')
def open_room(self, reply, room_type=None, room_name=None): if room_name != 'halloween_shop': self.set_variable('halloween_visited', False) if self.race == RAT_RACE: reply('Ты — крыса, у тебя не хватило сил сдвинуть дверь с места :(') self.open_corridor(reply) return self.state = 'room' self.rooms_count += 1 for m in self.missions: m.room_opened() if not (room_type and room_name): room_type, room_name = roomloader.get_next_room(self) logger.info('room_opened ' + room_name) last_mission = self.get_last_mission() if last_mission.get_room_type( ) == room_type and last_mission.get_room_name() == room_name: self.pop_mission() self.room = (room_type, room_name) self.room_temp = {} visited = self.get_perma_variable('visited_rooms', def_val=[]) if room_name not in visited: visited.append(room_name) self.set_perma_variable('visited_rooms', visited) statistics.track(self.uid, { 'uid': self.uid, 'name': room_name, 'type': room_type }, 'Room opened') room = roomloader.load_room(self.room[1], self.room[0], self) for i in self.get_items(): i.on_room(self, reply, room) to_delete = [] for i, b in enumerate(self.buffs): try: b.on_room(self, reply, room) if b.time <= 0: to_delete.append(i) except: pass for i in reversed(to_delete): self.buffs[i].on_end(self, reply, room) del self.buffs[i] if self.pet: self.get_pet().on_room(self, reply, room) if room.room_type == 'monster': self.set_room_temp('hp', room.hp) reply(locale_manager.get('ROOM_OPENED')) reply(room.name + '!') room.enter(self, reply) if self.state == 'room': reply(locale_manager.get('YOUR_ACTIONS'), room.get_actions(self)) if not room.can_open(self, reply): room.open_failure(self, reply) self.open_corridor(reply) return
def stop(bot, update): statistics.track(update.message.chat_id, update.message, 'Stop') usermanager.delete(update.message.chat_id)
def open_room(self, reply, room_type=None, room_name=None): if room_name != 'halloween_shop': self.set_variable('halloween_visited', False) if self.race == RAT_RACE: reply('Ты — крыса, у тебя не хватило сил сдвинуть дверь с места :(') self.open_corridor(reply) return self.state = 'room' self.rooms_count += 1 for m in self.missions: m.room_opened() if not (room_type and room_name): room_type, room_name = roomloader.get_next_room(self) logger.info('room_opened ' + room_name) last_mission = self.get_last_mission() if last_mission.get_room_type() == room_type and last_mission.get_room_name() == room_name: self.pop_mission() self.room = (room_type, room_name) self.room_temp = { } visited = self.get_perma_variable('visited_rooms', def_val=[]) if room_name not in visited: visited.append(room_name) self.set_perma_variable('visited_rooms', visited) statistics.track(self.uid, {'uid': self.uid, 'name': room_name, 'type': room_type}, 'Room opened') room = roomloader.load_room(self.room[1], self.room[0], self) for i in self.get_items(): i.on_room(self, reply, room) to_delete = [ ] for i, b in enumerate(self.buffs): try: b.on_room(self, reply, room) if b.time <= 0: to_delete.append(i) except: pass for i in reversed(to_delete): self.buffs[i].on_end(self, reply, room) del self.buffs[i] if self.pet: self.get_pet().on_room(self, reply, room) if room.room_type == 'monster': self.set_room_temp('hp', room.hp) reply(locale_manager.get('ROOM_OPENED')) reply(room.name + '!') room.enter(self, reply) if self.state == 'room': reply(locale_manager.get('YOUR_ACTIONS'), room.get_actions(self)) if not room.can_open(self, reply): room.open_failure(self, reply) self.open_corridor(reply) return