0

私は助けを求めている完全な初心者プログラマーです。私はおそらく 1 週間ほど Python を学んでいて、Binance API と Telegram API に集中しています。私が使用するパッケージは、python-binance と pyTelegramBotAPI です。Python と両方の API を学ぼうとしているところなので、楽しい小さなプロジェクトとしてボットを作成すると思いました。このボットは、私のオープンな先物ポジションをすべてテキスト メッセージとして送信します。

from binance.client import Client
import telebot
from telebot import types
import config
client = Client(config.API_PUBLIC, config.API_SECRET)
bot = telebot.TeleBot(config.TEL_API)

bot.send_message(chat_id='xxx', text='Bot has successfully started')

def getPositions():
    futures_account = client.futures_account()
    string_positions = ''
    for position in futures_account['positions']:
        if float(position['initialMargin']) > 0:
            string_positions += str(position['symbol'] + ': ' + position['unrealizedProfit'] + 'USDT\n')
        else:
            pass

@bot.inline_handler(lambda query: query.query == 'sendPositions')
def sendPositions(inline_query):
    futures_positions = types.InlineQueryResultArticle(
        id='1',
        title='sendPositions',
        input_message_content=types.InputTextMessageContent(str(getPositions()))
    )
    bot.answer_inline_query(inline_query.id, [futures_positions])

if __name__ == '__main__':
    bot.infinity_polling()

このボットは、私がやりたいことを正確に実行しますが、コマンドを使用してメッセージを送信するのは初めてです。ボットを実行したままにしておくと (あなたがそうするように)、最初にコマンドを送信するたびに、メッセージは常に同じになります。先物のポジションについて何も変更しない場合 (つまり、しばらく実行し続ける)、メッセージは最初のコマンドの開始後に古くなっています。これが Binance API の仕組みなのか、それとも私のコードの明らかな間違いなのかはわかりません。どんな助けでも大歓迎です。理想的には、更新された先物ポジションを毎回送信するメッセージで、数秒ごとにコマンドを開始できるでしょう!

4

0 に答える 0