자유 그리고 경험
텔레그램 봇 활용, 암기카드(사전) 만들기 본문
반응형
개요
텔레그램 봇을 이용해, 키워드를 입력하면 키워드에 맞는 간단한 설명을 출력하도록 봇을 만들어보려고 한다.
스펙
- python
- DB sqlite3 - 디비를 파일로 만들기 때문에, 이식이 쉽고 로그인 등 귀찮은 부분을 설정할 필요가 없어서 빠른 제작에 용이하다.
설명
- 텔레그램 봇 생성 방법과 간단한 사용은 다른 포스팅에서 다뤘다.
2022.05.26 - [기술] - 파이썬(python)으로 텔레그램 봇 만들기 - 명령어는 두가지만 넣었다.
- /start - DB와 table을 생성한다.
- /f 단어 - 단어를 검색한다. (띄어쓰기 가능)
- 단어를 입력하는 부분은 없다. 텔레그램에서 각 단어를 생성하고 설명을 넣기에는 ui가 좋지 않기 때문에 단어는 엑셀이나 스프레드시트에 입력 후 일괄로 DB에 넣도록 한다.
- 입력을 HeidiSql을 이용해 수작업으로 입력하였지만, 추후 더 편한 방법을 찾도록 해야겠다.
코드
#기본 모듈
import sqlite3
import os
from telegram import ParseMode
from telegram.ext import CommandHandler, Defaults, Updater
db_path = os.path.dirname(__file__)+'/mydb.db'
TELEGRAM_TOKEN="토큰 넣기"
#start 명령어. 한 스레드마다 commit을 해줘야 한다
def start(update, context):
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS dict (
ID integer primary key autoincrement,
keyword text, description text)''')
conn.commit()
context.bot.send_message(chat_id=update.effective_chat.id, text="시작!")
#단순히 keyword를 keyword 칼럼에서 찾아서 그 설명(description)을 출력한다.
def find(update, context):
keyword = " ".join(context.args) #띄어쓰기를 한 단어로 합치도록 처리
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute(f"SELECT description FROM dict WHERE keyword = '{keyword}' ")
rows = c.fetchall()
if len(rows) != 0:
response = keyword + '\n\n' + rows[0][0]
else: #정확한 단어가 없는 경우 단어가 포함된 키워드 추천
response = "없는 단어입니다."
c.execute(f"SELECT keyword FROM dict WHERE keyword LIKE '%{keyword}%' ")
rows = c.fetchall()
if len(rows)!= 0:
joinRow = ""
for row in rows:
joinRow+=" ,"+row[0]
response += f'''\n추천 키워드 : {joinRow}'''
conn.commit()
context.bot.send_message(chat_id=update.effective_chat.id, text=response)
#다른 포스팅에서 나온 대화부분
if __name__ == '__main__':
updater = Updater(token=TELEGRAM_TOKEN, defaults=Defaults(parse_mode=ParseMode.HTML))
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler('start', start))
dispatcher.add_handler(CommandHandler('f', find))
updater.start_polling() # Start the bot
updater.idle() # Wait for the script to be stopped, this will stop the bot as well
몇 줄의 코드로 단어장 봇을 완성하였다!
Develop
정확한 단어가 없을 시, 유사한 단어 찾아서 키워드 추천해주는 기능.완료- sqlite3가 아닌 mysql과 같은 db로 옮겨 그림자료 추가
- 단어카드 내부에서 다른 단어를 검색할 수 있는 링크 생성
반응형
'기술' 카테고리의 다른 글
ubuntu mariadb 설치 및 외부접속 기본 설정 (3) | 2022.06.27 |
---|---|
텔레그램 봇, 명령어 링크 만들기(파라미터까지) (0) | 2022.06.26 |
저장장치의 용량이 달라요. (0) | 2022.06.04 |
SD카드 포맷하는 법 (0) | 2022.06.04 |
[Linux] 리눅스, 종료되지 않게 프로그램 실행 (Nohup) (0) | 2022.05.27 |
Comments