Example #1
0
 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)
Example #2
0
 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)
Example #3
0
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
Example #4
0
    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
Example #5
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']
Example #6
0
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)
Example #7
0
 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)
Example #8
0
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
Example #9
0
    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)