示例#1
0
    def auth_kakao(self, mail, password, client, uuid, x_vc):
        user_session = self.cache.hget('choco_session', 'key')
        user_id = self.cache.hget('choco_session', 'id')

        if not user_session or not user_id:
            if not mail:
                print >> sys.stderr, "Authenticate failed: email address not found\n" + \
                    "Please check config.py and set 'choco_auth' to redis server"
                sys.exit(1)
            elif not password:
                print >> sys.stderr, "Authenticate failed: password not found\n" + \
                    "Please check config.py and set 'choco_auth' to redis server"
                sys.exit(1)
            elif not x_vc:
                print >> sys.stderr, "Authenticate failed: X-VC token not found\n" + \
                    "Please check config.py and set 'choco_auth' to redis server"
                sys.exit(1)

            self.kakao = kakaotalk(debug=self.config.DEBUG)
            auth_result = self.kakao.auth(mail, password, client, uuid, x_vc)
            if not auth_result:
                print >> sys.stderr, "KakaoTalk auth failed"
                sys.exit(1)
            else:
                login_result = self.kakao.login()
                if not login_result:
                    print >> sys.stderr, "KakaoTalk login failed"
                    sys.exit(1)
                else:
                    self.cache.hset('choco_session', 'key', self.kakao.session_key)
                    self.cache.hset('choco_session', 'id', self.kakao.user_id)
        else:
            self.kakao = kakaotalk(user_session, uuid, user_id,
                debug=self.config.DEBUG)
            login_result = self.kakao.login()
            if not login_result:
                print >> sys.stderr, "KakaoTalk login failed"
                sys.exit(1)

        return True
示例#2
0
 def reload_kakao(self):
     print >> sys.stdout, 'Trying to reconnect..'
     self.ping_process.stop()
     for p in self.pool:
         p.stop()
     while not self.queue.empty():
         self.queue.get()
     self.kakao.s.close()
     user_session = self.kakao.session_key
     uuid = self.kakao.device_uuid
     user_id = self.kakao.user_id
     del self.kakao
     self.kakao = kakaotalk(user_session, uuid, user_id, debug=self.config.DEBUG)
     login = self.kakao.login()
     if login:
         print >> sys.stdout, 'Reconnected'
         self.exit.value = False
         self.ping_process.start()
         for p in self.pool:
             p.start()
         self.watch()
     else:
         print >> sys.stderr, 'ERROR: failed to re-authorize to KakaoTalk'
示例#3
0
文件: session.py 项目: krhalo/pykakao
from pykakao import kakaotalk

kakao = kakaotalk()
if kakao.auth("*****@*****.**", "kt2714", "MBPR", "1"):
    print kakao.session_key
    print kakao.user_id
else:
    print "auth failed"
def main():

    
    
    kakao = kakaotalk(session_key="5e5ef730af994515a3d4e1ec1198653e05b1a8068c8d47f8a6ebc1847e332f93", device_uuid="s4", user_id=130229954)

    if kakao.login()["body"]["status"] == 0:

        print "Login succeed."



        while True:

            try:

                packet = kakao.translate_response()




                if packet:

                    command = packet["command"]

                    body = packet["body"]




                    now = time.strftime("%m/%d %H:%M:%S")




                    if command == "MSG":

                        message = body["chatLog"]["message"].encode("utf-8")

                        chat_id = body["chatLog"]["chatId"]

                        author_name = body["authorNickname"].encode("utf-8")

                        author_id = body["chatLog"]["authorId"]


                        print "[%s] (%d) %s > %s" % (now, chat_id, author_name, message)

                        sleep(0.1)
                        
                        list_txt=open("init_list.txt","r")
                        get_list_txt=list_txt.read()
                        list_txt.close()

                        if not str(chat_id) in get_list_txt:
                            kakao.write(chat_id,"@키워드 를 말해보세요!")
                            list_txt=open("init_list.txt","a")
                            list_txt.write(str(chat_id)+'\n')
                            list_txt.close()

                        if message == "@차단" and (author_id == kakao.user_id or author_id == 14146663):

                            if chat_id in blocked_list:

                                kakao.write(chat_id, "[성민봇] 이미 차단된 방입니다.")

                            else:

                                kakao.write(chat_id, "[성민봇] 차단되었습니다.")

                                blocked_list.append(chat_id)

                        elif message == "@차단해제" and (author_id == kakao.user_id or author_id == 14146663):

                            if chat_id in blocked_list:

                                kakao.write(chat_id, "[성민봇] 차단 해제되었습니다.")

                                blocked_list.remove(chat_id)

                            else:

                                kakao.write(chat_id, "[성민봇] 이미 차단 해제된 방입니다.")

                        if "@차단:" in message and (author_id == kakao.user_id or author_id == 14146663):
                            name = message.replace("@차단:","")
                            list_txt=open("blocked_list.txt","r")
                            get_list_txt=list_txt.read()
                            list_txt.close()
                            if not name in get_list_txt:
                                #blocked_list.append(name)
                                list_txt=open("blocked_list.txt","a")
                                list_txt.write(name)
                                list_txt.close()
                                kakao.write(chat_id, name+"님이 차단 되었습니다.")
                            else:
                                kakao.write(chat_id, name+"님은 이미 차단 되었습니다.")

                        elif "@차단해제:" in message and (author_id == kakao.user_id or author_id == 14146663):
                            name = message.replace("@차단해제:","")
                            list_txt=open("blocked_list.txt","r")
                            get_list_txt=list_txt.read()
                            list_txt.close()
                            if name in get_list_txt:                                
                                #blocked_list.remove(name)
                                
                                list_txt=open("blocked_list.txt","w")
                                list_txt.write(get_list_txt.replace(name,""))
                                list_txt.close()
                                kakao.write(chat_id, name+"님이 차단해제 되었습니다.")
                            else:
                                kakao.write(chat_id, name+"님은 차단목록에 없습니다.")


                        if "notice " in message and chat_id == 70546206443768:
                            f= open('init_list.txt','r')
                            notice_rooms = f.readlines()
                            f.close()

                            for notice_room in notice_rooms:
                                try:
                                    kakao.write(int(notice_room.replace('\n','')),message.replace('notice ',''))

                                except:
                                    print notice_room.replace('\n','')+"번 방 실패"

                        list_txt=open("blocked_list.txt","r")
                        get_list_txt=list_txt.read()
                        list_txt.close()


                        if not chat_id in blocked_list and not author_name in get_list_txt:
                            
                            if '@' in message:
                                message=message.replace('@','')

                            if message == "키워드":
                                kakao.write(chat_id,"키워드는 다음과 같습니다. '@'는 빼고 말해주세요!")
                            
                                kakao.write(chat_id,"◎실시간서비스 : 네이버실시간, 다음실시간, 영화실시간, 올림픽\n\n◎날씨서비스 : 날씨, 전국날씨\n\n◎뉴스서비스 : 뉴스, 스포츠뉴스, 축구뉴스, 야구뉴스, 농구뉴스\n\n◆유틸서비스 : 계산, 검색! , 번역\n\n◎기타서비스 : 나언제죽어?, 먹을거추천좀, 여자친구추천좀, 오늘의명언")
                                
                                kakao.write(chat_id,"[!NEW!]새 키워드 : 번역, 오늘의명언")

                            elif "오늘의명언" in message.replace(' ',''):

                                kakao.write(chat_id,get_today_saying())

                            elif "롤전적" in message:
                                kakao.write(chat_id,"롤전적 검색 기능은 삭제되었습니다.")
                            elif "성민봇" in message and not chat_id in chatroom_list:

                                kakao.write(chat_id,"주인님 카카오톡 : lsmorigin")

                            elif (message == "나가" or "꺼저" in message or "꺼져" in message):                                
                                #kakao.write(chat_id,"잠시 점검중 입니다.")
                                
                                kakao.write_emoticon(chat_id,"잘있어 친구들!","2202001.emot_065.png","(\uc774\ubaa8\ud2f0\ucf58)")
                                #init_list.remove(chat_id)
                                list_txt=open("init_list.txt","r")
                                get_list_txt=list_txt.read()
                                list_txt.close()
                                list_txt=open("init_list.txt","w")
                                list_txt.write(get_list_txt.replace(str(chat_id)+'\n',""))
                                list_txt.close()

                                kakao.leave(chat_id)

                            elif "번역" in message:
                                try:
                                    message = message.replace('번역','')
                                    sl = message[0:3]
                                    tl = message[3:6]
                                    word = message[6:]

                                    kakao.write(chat_id,google_translate.translate(sl,tl,word))
                                except:
                                    
                                    kakao.write(chat_id,"언어코드는 다음과 같습니다.\n한국어 : 한, 영어 : 영\n중국어 : 중, 일본어 : 일\n독일어 : 독, 프랑스어 : 불\n러시아어 : 러, 스페인어 : 스\n라틴어 : 라, 아랍어 : 아")
                                    kakao.write(chat_id,"예) \"한영번역 '번역할 문장' \" 을 말하시면 한->영 번역 결과가 나옵니다.")

                            elif message=="올림픽":
                                kakao.write(chat_id,get_rank.get_olympic_rank())

                            elif "안녕" in message or "ㅎㅇ" in message or "하이" in message:

                                kakao.write_emoticon(chat_id,hi[randint(0,len(hi)-1)]+"\n@키워드 를 말해봐!","2202001.emot_037.png","(\uc774\ubaa8\ud2f0\ucf58)") 

                            elif "검색!" in message:
                                if message != "검색!":
                                    try:
                                        word = message.replace("검색!","").replace(" ","")
                                        kakao.write(chat_id,get_dic_search(word))

                                    except:
                                        kakao.write(chat_id,"사전에 등록되지 않은 단어입니다.")
                                else:
                                    kakao.write(chat_id,"검색! '키워드' 를 말하시면 요약된 사전검색결과가 나옵니다.")


                            elif message.replace(' ','') == "네이버실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_rank.get_naver_rank())))

                            elif message.replace(' ','') == "다음실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_rank.get_daum_rank())))                            
                            
                            elif message.replace(' ','') == "영화실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s"%("\n".join(get_rank.get_movie_rank())))

                            elif message.replace(' ','') == "스포츠뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_sport_news())))

                            elif message.replace(' ','') == "축구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_soccer_news())))

                            elif message.replace(' ','') == "야구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_baseball_news())))

                            elif message.replace(' ','') == "농구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_basketball_news())))

                            elif message.replace(' ','')=="전국날씨":
                                
                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n\n")+get_weather.get_weather())

                            elif message=="날씨":

                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n")+get_weather.get_seoul_weather())

                            elif message=="뉴스":

                                kakao.write(chat_id,get_news.get_total_news())

                            elif message=="야동":

                                kakao.write(chat_id,".prx2.unblocksit.es 사이트 주소뒤에 이거 붙이고 들어가면 warning.or.kr 안뜸 ㅋ")

                            elif "계산" in message and author_name != "이민성":
                                _message = message.replace("계산","")
                                try:
                                    kakao.write(chat_id,"결과 : "+str(float(eval(_message))))
                                    if '/' in _message:
                                        kakao.write(chat_id,"소숫점까지 아시려면 소수형태로 숫자를 써주세요.\n(예 : 1.0/2.0) ")
                                except:
                                    kakao.write(chat_id,"제대로 된 수식을 입력하세요.\n연산자 종류 : +, -, *, /, ** <- 제곱,\nsqrt(n) <- n의 제곱근,\nlog(x,y) <- 밑이 y인 로그 x\nsin(x), cos(x), tan(x) <- 삼각함수(라디안)\n**수식앞에 '계산' 을 붙여주세요.**")

                            elif message=="서버":

                                kakao.write(chat_id,server_time(time_server_start))


                            elif "섹스키워드 " in message:
                                sexkey = message.replace("섹스키워드 ","")
                                f = open('sex.txt','a')
                                f.write(sexkey+'\n')
                                kakao.write(chat_id,"키워드가 추가되었습니다.")
                                f.close()

                            elif "섹스" in message:
                                f = open('sex.txt','r')
                                sex = f.readlines()                                
                                kakao.write(chat_id,sex[randint(0,len(sex)-1)])
                                kakao.write(chat_id,"섹스키워드 '키워드' 로 키워드 추가가 가능합니다. ")
                                f.close()

                            elif "언제죽어" in message.replace(' ',''):
                                
                                kakao.write_emoticon(chat_id,author_name+" 은(는) "+str(randint(1,70))+"년 뒤에 "+die[randint(0,len(die)-1)]+" 죽음 ^오^","2202002.emot_0"+str(randint(10,80))+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message=="광주는?":

                                kakao.write_emoticon(chat_id,"광주는..그..하나의 광역시야..그래서 100만명이 넘기떄문에 광역시로 지정하지 않을수가 없잖아?","2202001.emot_054.png","(\uc774\ubaa8\ud2f0\ucf58)")
                        
                            elif message=="먹을거추천좀":

                                kakao.write_emoticon(chat_id,food[randint(0,len(food)-1)],"2202001.emot_055.png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif "여자친구추천좀" in message.replace(' ',''):

                                kakao.write_emoticon(chat_id,"","2202001.emot_0"+str(foob[randint(0,len(foob)-1)])+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            
                            
                    else: # unknown commands

                        # print "[%s] <%s, %s>" % (now, command, body)

                        pass

                else:

                    if kakao.login()["body"]["status"] != 0:

                        print "Auto-reconnect failed."

                        kakao.s.close()

                        break

            except KeyboardInterrupt:

                kakao.s.close()

                exit()

    else:

        print "Login failed."
def main():

    
    
    kakao = kakaotalk(session_key="5e5ef730af994515a3d4e1ec1198653e05b1a8068c8d47f8a6ebc1847e332f93", device_uuid="s4", user_id=130229954)

    if kakao.login()["body"]["status"] == 0:

        print "Login succeed."



        while True:

            try:

                packet = kakao.translate_response()




                if packet:

                    command = packet["command"]

                    body = packet["body"]




                    now = time.strftime("%m/%d %H:%M:%S")




                    if command == "MSG":

                        message = body["chatLog"]["message"].encode("utf-8")

                        chat_id = body["chatLog"]["chatId"]

                        author_name = body["authorNickname"].encode("utf-8")

                        author_id = body["chatLog"]["authorId"]




                        print "[%s] (%d) %s > %s" % (now, chat_id, author_name, message)

                        sleep(0.1)
                        

                        list_txt=open("init_list.txt","r")
                        get_list_txt=list_txt.read()
                        list_txt.close()

                        if not str(chat_id) in get_list_txt:
                            kakao.write(chat_id,"@키워드 를 말해보세요!")
                            list_txt=open("init_list.txt","a")
                            list_txt.write(str(chat_id))
                            list_txt.close()

                        if message == "@차단" and (author_id == kakao.user_id or author_id == 14146663):

                            if chat_id in blocked_list:

                                kakao.write(chat_id, "[성민봇] 이미 차단된 방입니다.")

                            else:

                                kakao.write(chat_id, "[성민봇] 차단되었습니다.")

                                blocked_list.append(chat_id)

                        elif message == "@차단해제" and (author_id == kakao.user_id or author_id == 14146663):

                            if chat_id in blocked_list:

                                kakao.write(chat_id, "[성민봇] 차단 해제되었습니다.")

                                blocked_list.remove(chat_id)

                            else:

                                kakao.write(chat_id, "[성민봇] 이미 차단 해제된 방입니다.")

                        if "@차단:" in message and (author_id == kakao.user_id or author_id == 14146663):
                            name = message.replace("@차단:","")
                            list_txt=open("blocked_list.txt","r")
                            get_list_txt=list_txt.read()
                            list_txt.close()
                            if not name in get_list_txt:
                                #blocked_list.append(name)
                                list_txt=open("blocked_list.txt","a")
                                list_txt.write(name)
                                list_txt.close()
                                kakao.write(chat_id, name+"님이 차단 되었습니다.")
                            else:
                                kakao.write(chat_id, name+"님은 이미 차단 되었습니다.")

                        elif "@차단해제:" in message and (author_id == kakao.user_id or author_id == 14146663):
                            name = message.replace("@차단해제:","")
                            list_txt=open("blocked_list.txt","r")
                            get_list_txt=list_txt.read()
                            list_txt.close()
                            if name in get_list_txt:                                
                                #blocked_list.remove(name)
                                
                                list_txt=open("blocked_list.txt","w")
                                list_txt.write(get_list_txt.replace(name,""))
                                list_txt.close()
                                kakao.write(chat_id, name+"님이 차단해제 되었습니다.")
                            else:
                                kakao.write(chat_id, name+"님은 차단목록에 없습니다.")

                        list_txt=open("blocked_list.txt","r")
                        get_list_txt=list_txt.read()
                        list_txt.close()
                        if not chat_id in blocked_list and not author_name in get_list_txt:
                            if message == "@키워드":
                                kakao.write(chat_id,"키워드는 다음과 같습니다. '@'는 빼고 말해주세요!")
                                kakao.write(chat_id,"네이버실시간, 술어디서마실까?, 석뽕찡!, 나언제죽어?, 먹을거추천좀, 여자친구추천좀")
                                kakao.write(chat_id,"새 키워드 : 영화실시간, 서울날씨, 전국날씨, 뉴스, 스포츠뉴스, 축구뉴스, 야구뉴스")
                            
                            elif message == "나가" or "꺼저" in message or "꺼져" in message:                                

                                kakao.write_emoticon(chat_id,"잘있어 친구들!","2202001.emot_065.png","(\uc774\ubaa8\ud2f0\ucf58)")
                                #init_list.remove(chat_id)
                                list_txt=open("init_list.txt","r")
                                get_list_txt=list_txt.read()
                                list_txt.close()
                                list_txt=open("init_list.txt","w")
                                list_txt.write(get_list_txt.replace(str(chat_id),""))
                                list_txt.close()

                                kakao.leave(chat_id)
                                
                            elif "안녕" in message or "ㅎㅇ" in message or "하이" in message:

                                kakao.write_emoticon(chat_id,hi[randint(0,len(hi)-1)],"2202001.emot_037.png","(\uc774\ubaa8\ud2f0\ucf58)") 

                            elif message == "네이버실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_naver_rank())))
                            
                            elif message == "영화실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s"%("\n".join(get_movie_rank())))

                            elif message == "스포츠뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_sport_news())))

                            elif message == "축구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_soccer_news())))

                            elif message == "야구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_baseball_news())))

                            elif message=="전국날씨":
                                
                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n\n")+get_weather())

                            elif message=="서울날씨":

                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n")+get_seoul_weather())

                            elif message=="뉴스":

                                kakao.write(chat_id,get_news())

                            elif "수강신청" in message:

                                kakao.write(chat_id,"http://portal.yonsei.ac.kr\n수강신청 일자는 \n2월 12일(수)(2학년)(재수강 신청불가)\n 2월 14일(금)(전체)(재수강 신청가능) \n로그인 가능시간 07:00 ~ 17:00 \n수강신청 가능시간 09:00 ~ 17:00\n 수강변경 기간 : 3월 5일(수)~ 3월 7일(금)")

                            elif message=="서버":

                                time_server_runtime_second = int(time.time() - time_server_start)
                                time_server_runtime_minute = int(time_server_runtime_second/60)
                                time_server_runtime_hour =  int(time_server_runtime_minute/60)

                                if time_server_runtime_hour != 0:
                                    kakao.write(chat_id,"현재 서버가 %d시간 %d분 %d초 동안 가동중입니다."% (time_server_runtime_hour%60,time_server_runtime_minute%60,time_server_runtime_second%60))
                                elif time_server_runtime_minute != 0:
                                    kakao.write(chat_id,"현재 서버가 %d분 %d초 동안 가동중입니다."% (time_server_runtime_minute%60, time_server_runtime_second%60))
                                else:
                                    kakao.write(chat_id,"현재 서버가 %d 초 동안 가동중입니다."% (time_server_runtime_second%60))

                            elif "섹스" in message:

                                kakao.write(chat_id,sex[randint(0,len(sex)-1)])

                            elif message == "석뽕찡!":
                                cnt=0
                                while cnt < 5:
                                    kakao.write(chat_id,"نا سخية، وأنا كثيرا الحاكم من هذا العالم، وأنا")
                                    sleep(0.5)
                                    cnt += 1

                            elif message =="술어디서마실까?":
                                kakao.write(chat_id,sool[randint(0,len(sool)-1)])

                            elif message =="나언제죽어?":
                                #kakao.write(chat_id,str(randint(1,70))+"년 뒤에 "+die[randint(0,len(die)-1)]+" 죽음 ^오^")
                                kakao.write_emoticon(chat_id,str(randint(1,70))+"년 뒤에 "+die[randint(0,len(die)-1)]+" 죽음 ^오^","2202002.emot_0"+str(randint(10,80))+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message=="광주는?":

                                kakao.write_emoticon(chat_id,"광주는..그..하나의 광역시야..그래서 100만명이 넘기떄문에 광역시로 지정하지 않을수가 없잖아?","2202001.emot_054.png","(\uc774\ubaa8\ud2f0\ucf58)")
                        
                            elif message=="먹을거추천좀":

                                kakao.write_emoticon(chat_id,food[randint(0,len(food)-1)],"2202001.emot_055.png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message=="여자친구추천좀":

                                kakao.write_emoticon(chat_id,"","2202001.emot_0"+str(foob[randint(0,len(foob)-1)])+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message =="남자친구추천좀":

                                kakao.write(chat_id,boy_friend[randint(0,len(boy_friend)-1)])

                            elif "ㅋㅋㅋㅋ" in message:

                                kakao.write(chat_id,"ㅋㅋㅋㅋㅋㅋㅋㅋ")


                            elif "생축" in message or "생일축하" in message or "생일" in message:

                                kakao.write_emoticon(chat_id,"생일 축하드려요~","2202001.emot_045.png")

                            elif author_name == "핑중":
   
                                kakao.write(chat_id,"핑중아 조용히좀 해줄래?")
                            """
                            elif message == "알람":

                                kakao.write(chat_id,"(숫자)초알람 이라고 말하시면 (숫자)초 뒤에 알람이 울립니다")
                            
                            elif "초알람" in message:

                                number=message.replace("초알람","")
                                
                                try:
                                    _number=abs(int(number))
                                    if _number <= 60:
                                        kakao.write(chat_id,str(_number)+"초 뒤에 봐요!")
                                        sleep(_number)
                                        kakao.write(chat_id,str(_number)+"초가 경과하였습니다")
                                    else:
                                        kakao.write(chat_id,"60초 내에서 정해주세요!")
                                except ValueError:
                                    kakao.write(chat_id,"정수로 말해주세요!")
                            """

                            for word in slang:

                                if word in message:

                                    kakao.write(chat_id,"욕을하면 못써요")
                                    break

                            for word in four_character:

                                if word in message:

                                    kakao.write_emoticon(chat_id,"넵! 4글자 이상일때 제가 쳐웃습니다","2202001.emot_024.png")

                            
                    else: # unknown commands

                        # print "[%s] <%s, %s>" % (now, command, body)

                        pass

                else:

                    if kakao.login()["body"]["status"] != 0:

                        print "Auto-reconnect failed."

                        kakao.s.close()

                        break

            except KeyboardInterrupt:

                kakao.s.close()

                exit()

    else:

        print "Login failed."
示例#6
0
文件: echo.py 项目: krhalo/pykakao
# coding:utf-8

from pykakao import kakaotalk
from PIL import Image
import random
import os
from google_image import go

img_cnt = 0
kakao = kakaotalk("d857a9a87a5e43218050f8aad86f5da08019e44df22c4e6788a8bc7b03478294", "1", 4507713)

if kakao.login()["body"]["status"] == 0:
    while True:
        packet = kakao.translate_response()

	if packet["command"] == "MSG":
	    message = packet["body"]["chatLog"]["message"].encode("utf-8")
	    groupid = packet["body"]["chatLog"]["chatId"]
	    uid = packet["body"]["chatLog"]["authorId"]
	
	    if message[0] == '>':
	        kakao.write(groupid, os.popen(packet["body"]["chatLog"]["message"][1:]).read())

	    if message[:7] == "@검색":
	        print "equal"
	        kakao.write(groupid, "https://www.google.co.kr/#newwindow=1&q=" + packet["body"]["chatLog"]["message"][4:])

	    if message[:7] == "@구글":
	        kakao.write(groupid, "http://lmgtfy.com/?q=" + packet["body"]["chatLog"]["message"][4:])

	    if message[:10] == "@이미지":
示例#7
0
文件: bot.py 项目: krhalo/NONOOMA
from pykakao import kakaotalk

kakao = kakaotalk("SESSION KEY", "DEVICE ID", USER ID)
if kakao.login():
    while True:
        packet = kakao.translate_response()

        if not packet:
            print "connection closed."

        if packet["command"] == "MSG":
            if packet["body"]["chatLog"]["authorId"] != kakao.user_id:
                kakao.write(packet["body"]["chatLog"]["chatId"], packet["body"]["chatLog"]["message"])
else:
    print "login failed."
def main():

    
    
    kakao = kakaotalk(session_key="5e5ef730af994515a3d4e1ec1198653e05b1a8068c8d47f8a6ebc1847e332f93", device_uuid="s4", user_id=130229954)

    if kakao.login()["body"]["status"] == 0:

        print "Login succeed."



        while True:

            try:

                packet = kakao.translate_response()




                if packet:

                    command = packet["command"]

                    body = packet["body"]




                    now = time.strftime("%m/%d %H:%M:%S")




                    if command == "MSG":

                        message = body["chatLog"]["message"].encode("utf-8")

                        chat_id = body["chatLog"]["chatId"]

                        author_name = body["authorNickname"].encode("utf-8")

                        author_id = body["chatLog"]["authorId"]

                        if len(message) <= 200 and not 'DEBUG' in message and not chat_id in blocked_list:
                            print "[%s] (%d) %s > %s" % (now, chat_id, author_name, message)
                        else:
                            kakao.leave(chat_id)
                        """
                        if not chat_id in chatroom_list:
                            kakao.write(chat_id,"(윙크)오늘은 여기까지!\n내일 봐요~")
                            kakao.leave(chat_id)
                            # 지울시 키워드 스타트 수정하기!
                        """
                        #KEYWARDS START
                        if not chat_id in blocked_list:
                            
                            if '@' in message:

                                message=message.replace('@','')

                            if message == "키워드" or message == "도움" or message=="도움말":

                                kakao.write(chat_id,"키워드는 다음과 같습니다. '@'는 빼고 말해주세요!")
                                kakao.write(chat_id,"◎실시간서비스 : 네이버실시간, 다음실시간, 영화실시간, 주식\n\n◎날씨서비스 : 날씨, 전국날씨\n\n◎뉴스서비스 : 뉴스, 스포츠뉴스, 축구뉴스, 야구뉴스, 농구뉴스\n\n◆유틸서비스 : 검색!, 위키!, 번역, 롤전적\n\n◎키워드등록 : 등록!, 뜻!\n\n◎기타서비스 : 나언제죽어?, 먹을거추천좀, 여자친구추천좀, 오늘의명언, 로또, 확률, 크기, 랜덤\n\n♠만든놈정보 : 개발자\n\n성민봇 페북 : http://facebook.com/lsmbot")

                            elif "오늘의명언" in message.replace(' ',''):

                                kakao.write(chat_id,get_today_saying())


                            elif "번역" in message:
                                try:
                                    message = message.replace('번역','')
                                    sl = message[0:3]
                                    tl = message[3:6]
                                    word = message[6:]

                                    kakao.write(chat_id,google_translate.translate(sl,tl,word))
                                except:
                                    
                                    kakao.write(chat_id,"언어코드는 다음과 같습니다.\n한국어 : 한, 영어 : 영\n중국어 : 중, 일본어 : 일\n독일어 : 독, 프랑스어 : 불\n러시아어 : 러, 스페인어 : 스\n라틴어 : 라, 아랍어 : 아\n이탈리아어 : 이")
                                    kakao.write(chat_id,"예) 한영번역 '번역할 문장'  을 말하시면 한->영 번역 결과가 나옵니다.")

                            elif message=="주식":
                                kakao.write(chat_id,get_rank.get_stock())

                            elif "안녕" in message or "ㅎㅇ" in message or "하이" in message:

                                kakao.write_emoticon(chat_id,random.choice(hi)+"\n@키워드 를 말해봐!","2202001.emot_037.png","(\uc774\ubaa8\ud2f0\ucf58)") 

                            elif '등록!' in message:
                                message = message.replace('등록!','')
                                try:
                                    keyward = message[0:message.index(':')]
                                    word = message[message.index(':')+1:]
                                    write_keyward(keyward.replace(' ','').replace("'",""),word,author_name)
                                    kakao.write(chat_id,"키워드가 등록되었습니다.\n뜻! 키워드 로 확인 가능합니다.")
                                except:
                                    kakao.write(chat_id,"등록! 키워드 : 뜻 을 입력해주세요.")

                            elif '뜻!' in message:
                                message = message.replace('뜻!','').replace(' ','')
                                try:
                                    kakao.write(chat_id,load_keyward(message))
                                except:
                                    kakao.write(chat_id,"등록되지 않은 키워드입니다.\n등록! 키워드 : 뜻 으로 키워드 추가가 가능합니다.")

                            elif message=='로또':
                                kakao.write_emoticon(chat_id,author_name+'님의 이번주 로또 번호는!\n'+get_lotto_num()+'\n입니다! 부자되세요.','2202002.emot_010.png')

                            elif '확률' in message:

                                if message[len(message)-6:] == '확률':

                                    if message == '확률':
                                        kakao.write(chat_id,"뭐뭐할 확률 을 말하시면 성민봇이 가늠해줍니다.")
                                    elif '내가' in message:
                                        message = message.replace('내가',author_name+"이")
                                        kakao.write(chat_id,probability(message))
                                    elif '성민' in message:
                                        message = message.replace('성민',author_name)
                                        kakao.write(chat_id,probability(message))
                                    else:
                                        kakao.write(chat_id,probability(message))

                            elif '크기' in message:

                                if message[len(message)-6:] == '크기':
                                    if message == '크기':
                                        kakao.write(chat_id,"뭐뭐의 크기 를 말하시면 성민봇이 추정해봅니다.")
                                    elif '성민' in message:
                                        message = message.replace('성민',author_name)
                                        kakao.write(chat_id,size(message))
                                    else:
                                        kakao.write(chat_id,size(message))

                            elif '랜덤' in message:
                                if message == '랜덤':
                                    kakao.write(chat_id,"나열된 단어중에서 하나를 선택합니다\n예) 랜덤 남자 여자 중성")
                                else:
                                    message = message.replace('랜덤','')
                                    kakao.write(chat_id,random_choice(message))

                            elif "검색!" in message:
                                if message != "검색!":
                                    try:
                                        word = message.replace("검색!","").replace(' ','')
                                        kakao.write(chat_id,get_dic_search(word))

                                    except:
                                        kakao.write(chat_id,"네이버사전에 등록되지 않은 단어입니다.\n위키! 를 통해 검색해보세요.")
                                else:
                                    kakao.write(chat_id,"검색! 키워드 를 말하시면 요약된 네이버사전 검색결과가 나옵니다.")

                            elif "위키!" in message:
                                if message != "위키!":
                                    try:
                                        word = message.replace("위키!","").replace(' ','')
                                        kakao.write(chat_id,get_wiki_search(word))

                                    except:
                                        kakao.write(chat_id,"엔하위키 사전에 등록되지 않은 단어이거나.\n현재 엔하위키 사이트가 응답하지 않습니다.")
                                else:
                                    kakao.write(chat_id,"위키! 키워드 를 말하시면 엔하위키 검색결과가 나옵니다..")

                            elif '롤전적' in message:

                                name = message.replace('롤전적','').replace("'","")
                                try:
                                    kakao.write(chat_id,get_lol.get_lol_info(name))
                                except:
                                    kakao.write(chat_id,"롤전적 제대로된 소환사명\n을 치세요")
                            

                            elif message.replace(' ','') == "네이버실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_rank.get_naver_rank())))

                            elif message.replace(' ','') == "다음실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_rank.get_daum_rank())))                            
                            
                            elif message.replace(' ','') == "영화실시간":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s"%("\n".join(get_rank.get_movie_rank())))

                            elif message.replace(' ','') == "스포츠뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_sport_news())))

                            elif message.replace(' ','') == "축구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_soccer_news())))

                            elif message.replace(' ','') == "야구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_baseball_news())))

                            elif message.replace(' ','') == "농구뉴스":

                                kakao.write(chat_id, time.strftime("[%m월 %d일 %H시%M분%S초 현재]")+"\n"+"%s" % ("\n".join(get_news.get_basketball_news())))

                            elif message.replace(' ','')=="전국날씨":
                                
                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n\n")+get_weather.get_weather())

                            elif message=="날씨":

                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n")+get_weather.get_seoul_weather())

                            elif message=="뉴스":

                                kakao.write(chat_id,get_news.get_total_news())

                            elif message=="야동":

                                kakao.write(chat_id,".prx2.unblocksit.es 사이트 주소뒤에 이거 붙이고 들어가면 warning.or.kr 안뜸 ㅋ")

                            elif "계산" in message and author_id==14146663:
                                _message = message.replace("계산","")
                                try:
                                    kakao.write(chat_id,"결과 : "+str(float(eval(_message))))                                    
                                except:
                                    kakao.write(chat_id,"제대로 된 수식을 입력하세요.\n연산자 종류 : +, -, *, /, ** <- 제곱,\nsqrt(n) <- n의 제곱근,\nlog(x,y) <- 밑이 y인 로그 x\nsin(x), cos(x), tan(x) <- 삼각함수(라디안)\n**수식앞에 '계산' 을 붙여주세요.**")

                            elif message=="서버":

                                kakao.write(chat_id,server_time(time_server_start))

                            elif "언제죽어" in message.replace(' ',''):
                                if '은' in message:
                                    kakao.write_emoticon(chat_id,message[0:message.index('은')]+" 은(는) "+str(random.randint(1,70))+"년 뒤에 "+random.choice(die)+" 죽음 ^오^","2202002.emot_0"+str(random.randint(10,80))+".png","(\uc774\ubaa8\ud2f0\ucf58)")
                                elif '는' in message:
                                    kakao.write_emoticon(chat_id,message[0:message.index('는')]+" 은(는) "+str(random.randint(1,70))+"년 뒤에 "+random.choice(die)+" 죽음 ^오^","2202002.emot_0"+str(random.randint(10,80))+".png","(\uc774\ubaa8\ud2f0\ucf58)")
                                else:
                                    kakao.write_emoticon(chat_id,author_name+" 은(는) "+str(random.randint(1,70))+"년 뒤에 "+random.choice(die)+" 죽음 ^오^","2202002.emot_0"+str(random.randint(10,80))+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message=="먹을거추천좀":

                                kakao.write_emoticon(chat_id,random.choice(food),"2202001.emot_055.png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif "여자친구추천좀" in message.replace(' ',''):

                                kakao.write_emoticon(chat_id,"","2202001.emot_0"+str(random.choice(foob))+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message == '개발자':

                                kakao.write(chat_id,"카카오톡 패킷분석은 김할라님의 pykakao를 사용하였습니다.\nhttps://github.com/HallaZzang/pykakao\n\n이메일 : [email protected]\n\n개발자는 파릇파릇한 20살. 여친구함\n\n성민봇 페이스북 :\n http://facebook.com/lsmbot")                            

                            elif (message == "나가" or "꺼저" in message or "꺼져" in message):
                                
                                if chat_id in chatroom_list:
                                    kakao.write(chat_id,"이 방은 나가기가 제한되어있는 방입니다.")
                                else:
                                    kakao.write_emoticon(chat_id,random.choice(bye),"2202001.emot_065.png","(\uc774\ubaa8\ud2f0\ucf58)")

                                    kakao.leave(chat_id)
                            
                    else: # unknown commands

                        # print "[%s] <%s, %s>" % (now, command, body)

                        pass

                else:

                    if kakao.login()["body"]["status"] != 0:

                        print "Auto-reconnect failed."

                        kakao.s.close()

                        break

            except KeyboardInterrupt:

                kakao.s.close()

                exit()

    else:

        print "Login failed."
示例#9
0
def main():

    blocked_list = []
    



    kakao = kakaotalk(session_key="53d4e2f0dd28494a963f712e9c4a19193f7a10bb1e94413498f7becc3f31b801", device_uuid="vega", user_id=131386955)

    if kakao.login()["body"]["status"] == 0:

        print "Login succeed."



        while True:

            try:

                packet = kakao.translate_response()




                if packet:

                    command = packet["command"]

                    body = packet["body"]




                    now = time.strftime("%m/%d %H:%M:%S")




                    if command == "MSG":

                        message = body["chatLog"]["message"].encode("utf-8")

                        chat_id = body["chatLog"]["chatId"]

                        author_name = body["authorNickname"].encode("utf-8")

                        author_id = body["chatLog"]["authorId"]




                        print "[%s] (%d) %s > %s" % (now, chat_id, author_name, message)

                        sleep(0.1)
                        
                        if message == "@차단" and (author_id == kakao.user_id or author_id == 14146663):

                            if chat_id in blocked_list:

                                kakao.write(chat_id, "[성민봇] 이미 차단된 방입니다.")

                            else:

                                kakao.write(chat_id, "[성민봇] 차단되었습니다.")

                                blocked_list.append(chat_id)

                        elif message == "@차단해제" and (author_id == kakao.user_id or author_id == 14146663):

                            if chat_id in blocked_list:

                                kakao.write(chat_id, "[성민봇] 차단 해제되었습니다.")

                                blocked_list.remove(chat_id)

                            else:

                                kakao.write(chat_id, "[성민봇] 이미 차단 해제된 방입니다.")




                        if not chat_id in blocked_list:
                            if message == "@키워드" or "명령어" in message:
                                kakao.write(chat_id,"키워드는 다음과 같습니다. '@'는 빼고 말해주세요!")
                                kakao.write(chat_id,"네이버실시간, 술어디서마실까?, 석뽕찡!, 나언제죽어?, 먹을거추천좀, 여자친구추천좀")
                                kakao.write(chat_id,"새 키워드 : 영화실시간, 알람, 서울날씨, 전국날씨")
                                

                            elif message == "네이버실시간":

                                kakao.write(chat_id, "[성민봇 네이버 실시간 검색어]\n"+time.strftime("%m월 %d일 %H시%M분%S초 현재")+"\n"+"%s" % ("\n".join(get_naver_rank())))
                            
                            elif message == "영화실시간":

                                kakao.write(chat_id, "[성민봇 영화 실시간(조회순)]\n"+time.strftime("%m월 %d일 %H시%M분%S초 현재")+"\n"+"%s"%("\n".join(get_movie_rank())))

                            elif message == "섹스":
                                kakao.write(chat_id,sex[randint(0,len(sex)-1)])

                            elif message == "석뽕찡!":
                                cnt=0
                                while cnt < 5:
                                    kakao.write(chat_id,"نا سخية، وأنا كثيرا الحاكم من هذا العالم، وأنا")
                                    sleep(0.5)
                                    cnt += 1

                            elif message =="술어디서마실까?":
                                kakao.write(chat_id,sool[randint(0,len(sool)-1)])

                            elif message =="나언제죽어?":
                                #kakao.write(chat_id,str(randint(1,70))+"년 뒤에 "+die[randint(0,len(die)-1)]+" 죽음 ^오^")
                                kakao.write_emoticon(chat_id,str(randint(1,70))+"년 뒤에 "+die[randint(0,len(die)-1)]+" 죽음 ^오^","2202002.emot_0"+str(randint(10,80))+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message=="광주는?":
                                kakao.write_emoticon(chat_id,"광주는..그..하나의 광역시야..그래서 100만명이 넘기떄문에 광역시로 지정하지 않을수가 없잖아?","2202001.emot_054.png","(\uc774\ubaa8\ud2f0\ucf58)")
                        
                            elif "안녕" in message or "ㅎㅇ" in message or "하이" in message:
                                kakao.write_emoticon(chat_id,hi[randint(0,len(hi)-1)],"2202001.emot_037.png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message == "나가" or "꺼저" in message or "꺼져" in message:
                                if author_name != "이동환":
                                    kakao.write_emoticon(chat_id,"잘있어 친구들!","2202001.emot_065.png","(\uc774\ubaa8\ud2f0\ucf58)")
                                    #init_list.remove(chat_id)
                                    kakao.leave(chat_id)
                                else:
                                    kakao.write_emoticon(chat_id,"싫은데?","2202001.emot_076.png")

                            elif message=="먹을거추천좀":
                                kakao.write_emoticon(chat_id,food[randint(0,len(food)-1)],"2202001.emot_055.png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif message=="여자친구추천좀":
                                kakao.write_emoticon(chat_id,"","2202001.emot_0"+str(foob[randint(0,len(foob)-1)])+".png","(\uc774\ubaa8\ud2f0\ucf58)")

                            elif "ㅋㅋㅋㅋ" in message:
                                kakao.write(chat_id,"ㅋㅋㅋㅋㅋㅋㅋㅋ")


                            elif "생축" in message or "생일축하" in message or "생일" in message:
                                kakao.write_emoticon(chat_id,"생일 축하드려요~","2202001.emot_045.png")

                            elif author_name == "핑중":
                                kakao.write(chat_id,"핑중아 조용히좀 해줄래?")

                            elif message == "알람":
                                kakao.write(chat_id,"(숫자)초알람 이라고 말하시면 (숫자)초 뒤에 알람이 울립니다")

                            elif "초알람" in message:
                                number=""
                                for word in message:
                                    if word == '\xec':
                                        break
                                    number+=word
                                try:
                                    _number=abs(int(number))
                                    if _number <= 60:
                                        kakao.write(chat_id,str(_number)+"초 뒤에 봐요!")
                                        sleep(_number)
                                        kakao.write(chat_id,str(_number)+"초가 경과하였습니다")
                                    else:
                                        kakao.write(chat_id,"60초 내에서 정해주세요!")
                                except ValueError:
                                    kakao.write(chat_id,"정수로 말해주세요!")

                            elif message=="전국날씨":
                                
                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n\n")+get_weather()+"\n\n[네이버 날씨 제공]")

                            elif message=="서울날씨":
                                kakao.write(chat_id,time.strftime("[%m월 %d일 %H시%M분%S초 현재]\n")+get_seoul_weather()+"\n[네이버 날씨 제공]")
                        
                            for word in slang:
                                if word in message:
                                    kakao.write(chat_id,"욕을하면 못써요")
                                    break

                            for word in four_character:
                                if word in message:
                                    kakao.write_emoticon(chat_id,"넵! 4글자 이상일때 제가 쳐웃습니다","2202001.emot_024.png")

                            
                    else: # unknown commands

                        # print "[%s] <%s, %s>" % (now, command, body)

                        pass

                else:

                    if kakao.login()["body"]["status"] != 0:

                        print "Auto-reconnect failed."

                        kakao.s.close()

                        break

            except KeyboardInterrupt:

                kakao.s.close()

                exit()

    else:

        print "Login failed."