파이썬 - 텔레그램 대화봇 While 안돌아가는 오류 질문입니다.

조회수 1126회

안녕하세요!

현재 파이썬으로 텔레그램을 이용한 코인 알람봇을 만들고 있습니다. 완전 초보자라서 구글에 하나하나 찾아가면서 만들고 있는데요. 아래와 같이 대화봇을 만들고 명령어를 보내면 while문을 안돌고 같은 값만 뱉어내는 오류가 있습니다 .

이미지

코드의 어떤 부분이 잘못된걸까요??

    updater.start_polling()
    updater.idle()

이 구문을 제가 정확하게 이해하지 못해서 나오는 오류인거 같은데 해결을 못하겠습니다. 아래 코드 참고하셔서 도움 주시면 감사하겠습니다!

"""
Created on Tue May 25 23:17:44 2021

@author: aabomb45
"""

import pyupbit
import ccxt
import urllib.request 
import urllib.parse as parse
from bs4 import BeautifulSoup
from telegram.ext import Updater, MessageHandler, Filters, CommandHandler  # import modules


while True:
    ## KRW-USD ##
    url = "https://finance.naver.com/marketindex/"

    html = urllib.request.urlopen(url).read()
    soup = BeautifulSoup(html,'html.parser')

    value = soup.select("span.value")
    value_str = value[0].string[0:5]
    KRW_USD =float(value_str.replace(',',''))


    ## Upbit Key ##
    access_key = ""
    secret_key = ""


    ## Binance Key ##
    binance = ccxt.binance({
        'apiKey': '',
        'secret': '',
    })


    ## KimChi Calc ##
    up_btc = pyupbit.get_current_price("KRW-BTC")

    bi_ticker = binance.fetch_ticker("BTC/USDT")
    bi_btc = bi_ticker['close']

    KimChi =  (up_btc / (bi_btc * KRW_USD)) * 100 - 100
    #print(KimChi)


    ## Profit Calc ##
    upbit = pyupbit.Upbit(access_key, secret_key)
    up_avg_buy_price = float(upbit.get_balances()[1]['avg_buy_price'])
    up_avg_buy_balance = float(upbit.get_balances()[1]['balance'])
    up_profit = (up_btc - up_avg_buy_price) * up_avg_buy_balance
    #print(up_profit)


    balance = binance.fetch_balance(params={"type": "future"})

    for i in range(len(balance['info']['positions'])):
        if balance['info']['positions'][i]['symbol'] == "BTCUSDT":
            bi_avg_buy_price = float(balance['info']['positions'][i]['entryPrice'])

    bi_profit = (bi_avg_buy_price - bi_btc) * up_avg_buy_balance
    #print(bi_profit)

    profit = up_profit + (bi_profit * KRW_USD * (1 + KimChi * 0.01))
    #print(profit)

    ## Telegram ##

    my_token = '제 텔레그램 토큰입니다 ㅎㅎ'

    print('start telegram chat bot')



    # order function
    def order_command(update, context) :
        update.message.reply_text(KimChi)
        update.message.reply_text(profit)

    updater = Updater(my_token, use_context=True)

    order_handler = CommandHandler('order', order_command)
    updater.dispatcher.add_handler(order_handler)
    updater.start_polling()
    updater.idle()

1 답변

  • while문을 안돌고 같은 값만 뱉어내는 오류가 있습니다 .

    while문을 안돌고 같은 값만 뱉어내는 >> while문을 안돌고 같은 값만 뱉어내게 만든 겁니다.

    오류가 있습니다. >> 코드는 정상 작동하는데 무엇이 오류라는 걸까요?

    데이터를 조회하다가 명령어가 입력되었을 때 조회한 데이터를 발신해주는 걸 원하시는 것 같은데, 저라면 데이터를 조회하는 코드와, 명령어를 받았을 때 작동하는 코드를 각각 따로 작성해서 작동시키도록 할 것 같습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)