반응형
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
텔레그램 챗봇을 사용하여 금액을 입력하고 결과를 출력하도록 코드를 수정해보겠습니다. 이를 위해 python-telegram-bot
라이브러리를 사용할 것입니다.
다음 단계를 따르세요:
python-telegram-bot
라이브러리를 설치합니다:pip install python-telegram-bot
- 텔레그램 봇을 만들고, 봇 토큰을 받아옵니다. 텔레그램에서 BotFather를 사용하여 봇을 생성하고 토큰을 얻을 수 있습니다.
- 다음은 텔레그램 챗봇으로 금액을 입력받아 결과를 출력하는 수정된 파이썬 코드입니다:
import requests
from bs4 import BeautifulSoup
from telegram import Update, ForceReply
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
# 텔레그램 봇 토큰을 입력하세요
TELEGRAM_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
def get_exchange_rate():
url = "https://finance.naver.com/marketindex/exchangeDetail.naver?marketindexCd=FX_JPYKRW"
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
exchange_rate = soup.select_one('#content > div.spot > div.today > p.no_today').text.strip()
exchange_rate = ''.join(filter(lambda x: x.isdigit() or x == '.', exchange_rate))
return float(exchange_rate.replace(',', '')) / 100
else:
raise Exception("환율 정보를 가져오는 데 실패했습니다.")
def start(update: Update, _: CallbackContext) -> None:
update.message.reply_text(
'안녕하세요! 환율 변환 봇입니다. 원화 -> 엔화 또는 엔화 -> 원화 변환을 위해 금액을 입력하세요.\n'
'1. 원화 -> 엔화: 예) 1 10000\n'
'2. 엔화 -> 원화: 예) 2 10000\n'
'종료하려면 /stop 을 입력하세요.'
)
def convert_currency(update: Update, _: CallbackContext) -> None:
try:
krw_to_jpy_rate = get_exchange_rate()
except Exception as e:
update.message.reply_text(f"환율 정보를 가져오는 데 실패했습니다: {e}")
return
text = update.message.text
try:
choice, amount = text.split()
choice = int(choice)
amount = float(amount)
if choice == 1:
converted_to_jpy = amount / krw_to_jpy_rate
update.message.reply_text(f"{amount} KRW는 {converted_to_jpy:.2f} JPY입니다.")
elif choice == 2:
converted_to_krw = amount * krw_to_jpy_rate
update.message.reply_text(f"{amount} JPY는 {converted_to_krw:.2f} KRW입니다.")
else:
update.message.reply_text("유효한 선택이 아닙니다. 다시 입력해주세요.")
except ValueError:
update.message.reply_text("유효한 형식이 아닙니다. 다시 입력해주세요.")
except Exception as e:
update.message.reply_text(f"오류가 발생했습니다: {e}")
def stop(update: Update, _: CallbackContext) -> None:
update.message.reply_text('프로그램을 종료합니다.')
return
def main() -> None:
updater = Updater(TELEGRAM_TOKEN)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("stop", stop))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, convert_currency))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
위 코드는 다음과 같은 기능을 수행합니다:
- 텔레그램 봇에
/start
명령을 입력하면 인사말과 함께 사용법을 안내합니다. - 사용자가 금액과 변환 옵션을 입력하면 환율 정보를 가져와 계산한 후 결과를 반환합니다.
/stop
명령을 입력하면 봇이 종료 메시지를 반환합니다.
텔레그램 봇 토큰을 YOUR_TELEGRAM_BOT_TOKEN
자리로 교체한 후 코드를 실행해 보세요. 이 코드는 봇이 사용자와 상호작용하며 원화와 엔화 간의 환율 변환을 처리할 수 있도록 합니다.
https://twicetidetime.tistory.com/361
반응형