본문 바로가기

디스코드 봇 개발일지

디스코드 자작봇 개발일지#10

사진이 안보이신다면 https://blog.naver.com/turnbf/221376509168 에서 봐주세요.


!실시간검색어, !번역 기능 개선


오늘은 !실검, !번역 기능을 개선하였다.

!실검 개선하기전 모습


!실검 명령어의 개선하기전 모습이다.
링크가 그대로 보이기에 약간 산만해보인다.

!실검 개선후 모습

개선후 텍스트 겸 하이퍼링크를 겸해서 짧고 보기좋게 만들었다.

if message.content.startswith('!실시간검색어') or message.content.startswith('!실검'): url = "https://www.naver.com/" html = urllib.request.urlopen(url) bsObj = bs4.BeautifulSoup(html, "html.parser") realTimeSerach1 = bsObj.find('div', {'class': 'ah_roll_area PM_CL_realtimeKeyword_rolling'}) realTimeSerach2 = realTimeSerach1.find('ul', {'class': 'ah_l'}) realTimeSerach3 = realTimeSerach2.find_all('li') embed = discord.Embed( title='네이버 실시간 검색어', description='실시간검색어', colour=discord.Colour.green() ) for i in range(0,20): realTimeSerach4 = realTimeSerach3[i] realTimeSerach5 = realTimeSerach4.find('span', {'class': 'ah_k'}) realTimeSerach = realTimeSerach5.text.replace(' ', '') realURL = 'https://search.naver.com/search.naver?ie=utf8&query='+realTimeSerach print(realTimeSerach) embed.add_field(name=str(i+1)+'위', value='\n'+'[%s](<%s>)' % (realTimeSerach, realURL), inline=False) # [텍스트](<링크>) 형식으로 적으면 텍스트 하이퍼링크 만들어집니다 await client.send_message(message.channel, embed=embed)

[텍스트](<링크>) 형식으로 적으면 텍스트 하이퍼링크가 만들어진다는 것 을 알게되었다.
이것을 이용하여 텍스트 겸 바로가기 링크로 만들었다.

다음은 번역이다.

!번역 기능 개선 전 실행모습

개선전에는 단순 링크형식으로만 보냈기때문에 링크를 타고들어가야하는 번거로움이 생긴다.
그래서 네이버 파파고 번역기 API 를 이용하여 새롭게 개선해보았다.



!번역 기능 개선 후 실행모습

개선 후 바로바로 텍스트로 출력하게 만들었다.

if message.content.startswith('!번역'): learn = message.content.split(" ") Text = "" client_id = "" client_secret = "" url = "https://openapi.naver.com/v1/papago/n2mt" print(len(learn)) vrsize = len(learn) # 배열크기 vrsize = int(vrsize) for i in range(1, vrsize): #띄어쓰기 한 텍스트들 인식함 Text = Text+" "+learn[i] encText = urllib.parse.quote(Text) data = "source=ko&target=en&text=" + encText request = urllib.request.Request(url) request.add_header("X-Naver-Client-Id", client_id) request.add_header("X-Naver-Client-Secret", client_secret) response = urllib.request.urlopen(request, data=data.encode("utf-8")) rescode = response.getcode() if (rescode == 200): response_body = response.read() data = response_body.decode('utf-8') data = json.loads(data) tranText = data['message']['result']['translatedText'] else: print("Error Code:" + rescode) print('번역된 내용 :', tranText) embed = discord.Embed( title='한글->영어 번역결과', description=tranText, colour=discord.Colour.green() ) await client.send_message(message.channel,embed=embed)


번역 기능을 개선할때 import 한 것들  : 
import os
import sys
import json

API를 활용하니 확실히 편하다..


디스코드 봇 소스 파일입니다.