def leave(self, user): try: if settings.leave: user_id = user.user_id if settings.db: self.db.insert_user(id=user_id, req={ 'date': time.time() + settings.dispatch_timer, 'member': 0 }) else: utils.insert_users(id=user_id, member=0, mesallow=0, time=0) if self.api.messages.isMessagesFromGroupAllowed( group_id=settings.group_id, user_id=user_id)['is_allowed'] == 1: utils.insert_users(id=user_id, mesallow=1) self.send_message(user_id=user_id, message=settings.leave_mes) except Exception as exp: if u'Database problems' in str(exp): self.leave(user=user)
def join(self, user): try: if settings.join: user_id = user.user_id if settings.db: self.db.insert_user(id=user_id, req={ 'date': time.time() + settings.dispatch_timer, 'data2': 'day1', 'subscription': 1 }) else: utils.insert_users(id=user_id, member=1, mesallow=0, time=0) if self.api.messages.isMessagesFromGroupAllowed( group_id=settings.group_id, user_id=user_id)['is_allowed'] == 1: utils.insert_users(id=user_id, mesallow=1) self.send_message(user_id=user_id, message=settings.join_mes) except Exception as exp: if u'Database problems' in str(exp): self.join(user=user)
def get_photo(user, replace=True): if len(user) < 1: return None user_pic_list = ast.literal_eval(user['pics']) photos = api.photos.get(owner_id=settings.album.split('_')[0], album_id=settings.album.split('_')[1]) if photos['count'] == 0: return None photos = photos['items'] random.shuffle(photos) for i in photos: if i['id'] not in user_pic_list: if replace: user_pic_list.append(i['id']) utils.insert_users(id=user['id'], pics=str(user_pic_list), answer=i['text']) photo_attach = i photo_attach.update({'attype': 'photo'}) return {'photo': [photo_attach], 'count': i['text']} else: continue return None
def send_message(self, user_id=None, message='', attachments=[], user_ids=[], forward=None, sticker_id=None): try: mesid = 0 if len(attachments) > 0: atch = [] atch_string = '' for i in attachments: if 'access_key' in i: atch.append('%s%d_%d_%s' % (i['attype'], i['owner_id'], i['id'], i['access_key'])) else: atch.append('%s%d_%d' % (i['attype'], i['owner_id'], i['id'])) else: atch = [] if sticker_id == None: if user_id == None: mesid = self.api.messages.send(user_ids=','.join( str(x) for x in user_ids), message=message, forward_messages=forward, attachment=','.join(atch), random_id=randint(1, 9999)) elif user_ids == []: mesid = self.api.messages.send(user_id=user_id, message=message, forward_messages=forward, attachment=','.join(atch), random_id=randint(1, 9999)) else: if user_id == None: mesid = self.api.messages.send(user_ids=','.join( str(x) for x in user_ids), sticker_id=sticker_id, random_id=randint(1, 9999)) elif user_ids == []: mesid = self.api.messages.send(user_id=user_id, sticker_id=sticker_id, random_id=randint(1, 9999)) return mesid except Exception as exp: if u'users without permission' in str(exp): utils.insert_users(id=user_id, messallow=0) return if settings.debug == True: print u'Error in api.func.send_message\n' + traceback.format_exc( ) + '\n' logging.error(u'Error in api.func.send_message\n' + traceback.format_exc() + '\n') return 0
def returnHoroScope(id,zod): if len(utils.getusers(id=id))<1: utils.insert_users(id) # if utils.getusers(id=id)[0]['time'] > time.time(): # return u'Попробуйте завтра, на сегодня у Ваc уже есть предсказания' if zod not in symbols.keys(): return u'Укажите точнее Ваш знак зодиака' r = requests.get('http://img.ignio.com/r/export/utf/xml/daily/com.xml').text return xmltodict.parse(r)['horo'][symbols[zod]]['today']
def check_users(): # try: count = len(utils.getusers()) users = vkapi.groups.getMembers(group_id=settings.group_id)['count'] print 'importing %d users' % (users) if count < users: ofset = users // 1000 if ofset == 0: for i in vkapi.groups.getMembers( group_id=settings.group_id)["items"]: utils.insert_users(id=i, member=1, time=0, mesallow=1) else: for c in range(0, ofset): for i in vkapi.groups.getMembers(group_id=settings.group_id, offset=c * 1000)["items"]: utils.insert_users(id=i, member=1, time=0, mesallow=1) print 'imported %d users' % (len(utils.getusers())) print c print 'imported %d users' % (users)
def leave(self,user): try: if settings.leave: user_id = user.user_id if len(utils.getusers(id=user_id)) < 1: utils.insert_users(id=user_id,member=0,mesallow=0,time=0,game=0,lives=settings.lives,score=0,pics='[]',answer='') else: utils.insert_users(id=user_id,member=0,mesallow=0) if self.api.messages.isMessagesFromGroupAllowed(group_id=settings.group_id,user_id=user_id)['is_allowed'] == 1: utils.insert_users(id=user_id, mesallow=1) self.send_message(user_id=user_id,message=settings.leave_mes) except Exception as exp: if u'Database problems' in str(exp): self.leave(user=user)
def answers(helper, text, user_id, attachments, message, user): ### PUT UR ANSWERS HERE ### if u'начать игру' in text or u'продолж' in text: if len(user) < 1: utils.insert_users( id=user_id, member=helper.api.groups.isMember(group_id=settings.group_id, user_id=user_id), mesallow=0, time=0, game=1, lives=settings.lives, score=0, pics='[]', answer='') user = utils.getusers(id=user_id) if user[0]['time'] > time.time() or user[0]['lives'] <= 0: helper.send_message( user_id=user_id, message=u'У тебя закончились жизни, подожди 24 часа.') return if user[0]['lives'] <= 0 and user[0]['time'] < time.time(): helper.send_message(user_id=user_id, message=u'Отлично! Теперь у тебя снова ' + u'💜' * settings.lives + u' жизней') utils.insert_users(id=user_id, lives=settings.lives) if user[0]['pics'] == '[]': helper.send_message( user_id=user_id, message=u'Правила предельно просты! У вас есть ' + u'💙' * settings.lives + u' жизней. За каждый неправильный ответ ты теряешь одну жизнь. Если теряешь все - продолжить сможешь только через 24 часа' ) utils.insert_users(id=user_id, game=1) photo = gamebot.get_photo(user[0]) if photo is None: helper.send_message( user_id=user_id, message=u'У меня закончились картинки, зайди попозже!') return helper.send_message( user_id=user_id, message=u'Найди все отличия и напиши их количество!', attachments=photo['photo']) return if len(user) > 0: if text.isdigit(): if user[0]['lives'] <= 0 and user[0]['time'] < time.time(): helper.send_message(user_id=user_id, message=u'Отлично! Теперь у тебя снова ' + u'💜' * settings.lives + u' жизней') utils.insert_users(id=user_id, lives=settings.lives) user = utils.getusers(id=user_id) if user[0]['time'] > time.time(): helper.send_message( user_id=user_id, message=u'У тебя зкончились жизни, подожди 24 часа.') return if user[0]['game'] == 0: helper.send_message( user_id=user_id, message=u'У тебя не активна игра, напиши "начать игру"') return if text == user[0]['answer']: utils.insert_users(id=user_id, score=user[0]['score'] + user[0]['lives'], game=0, answer='') helper.send_message( user_id=user_id, message=u'Верно!' + u'\nТвой счет: ' + str(user[0]['score'] + user[0]['lives']) + u'\nЧтобы продолжить игру напиши "продолжить"') return else: lives = user[0]['lives'] - 1 if lives <= 0: helper.send_message( user_id=user_id, message= u'Неправильно!\nУ тебя зкончились жизни, подожди 24 часа.' ) utils.insert_users(id=user_id, lives=0, time=time.time() + 86400) return utils.insert_users(id=user_id, lives=lives) helper.send_message(user_id=user_id, message=u'Неправильно!\nУ тебя осталось ' + u'💜' * lives + u' жизней') return elif text in [u'счёт', u'счет']: helper.send_message(user_id=user_id, message=u'Твой счет: ' + str(user[0]['score']) + u' 📊') return elif u'жизн' in text: if user[0]['lives'] == 0: helper.send_message(user_id=user_id, message=u'У тебя 0 жизней') return helper.send_message(user_id=user_id, message=u'У тебя ' + u'💜' * user[0]['lives'] + u' жизней') return else: helper.send_message( user_id=user_id, message= u'Я тебя не понимаю! Если хочешь сыграть в игру, напиши "начать игру". \nИли же "счет" или "жизни" чтобы узнать свою статистику' ) return helper.send_message( user_id=user_id, message= u'Я тебя не понимаю! Если хочешь сыграть в игру, напиши "начать игру". \nИли же "счет" или "жизни" чтобы узнать свою статистику' ) return
def answer(self, message): user_id = message.user_id mess_time = message.date read_state = message.read_state try: text = message.body except AttributeError: text = '' try: attachments = [] for i in message.attachments: tpe = {'attype': i['type']} tpe.update(i[i['type']]) attachments.append(tpe) del tpe except AttributeError: attachments = [] except TypeError: attachments = [] user = utils.getusers(id=user_id) if len(user) < 1: utils.insert_users( id=user_id, member=self.api.groups.isMember(group_id=settings.group_id, user_id=user_id), mesallow=0, time=0, game=0, lives=settings.lives, score=0, pics='[]', answer='') user = utils.getusers(id=user_id) if settings.joinpls != '': if len(user) < 1: if self.api.groups.isMember(group_id=settings.group_id, user_id=user_id) == 0: utils.insert_users(id=user_id, member=0, mesallow=1, time=0, game=0, lives=settings.lives, score=0, pics='[]', answer='') self.send_message(user_id=user_id, message=settings.joinpls) return else: utils.insert_users(id=user_id, member=1, mesallow=1, time=0, game=0, lives=settings.lives, score=0, pics='[]', answer='') elif self.api.groups.isMember(group_id=settings.group_id, user_id=user_id) == 0: utils.insert_users(id=user_id, member=0, mesallow=1, time=0, game=0, lives=settings.lives, score=0, pics='[]', answer='') self.send_message(user_id=user_id, message=settings.joinpls) return user = utils.getusers(id=user_id) answers(self, text.lower(), user_id, attachments, message, user)