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
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'
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."
# 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] == "@이미지":
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."
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."