1. Главная
  2. Библиотека
  3. Программирование
  4. def monitor_addresses(): bot = Bot(token=BOT_TOKEN) while...
Разбор задачи

def monitor_addresses(): bot = Bot(token=BOT_TOKEN) while True: print("Сканируем транзакции...") try: history = load_history() for address in ADDRESSES: print(f"Проверяем транзакции для адреса: {address}") try: url =

  • Предмет: Программирование
  • Автор: Кэмп
  • #Языки программирования (C++, Java, Python и др.)
  • #Сетевое программирование
def monitor_addresses(): bot = Bot(token=BOT_TOKEN) while True: print("Сканируем транзакции...") try: history = load_history() for address in ADDRESSES: print(f"Проверяем транзакции для адреса: {address}") try: url =

Условие:

def monitor_addresses():
bot = Bot(token=BOT_TOKEN)

while True:
print("Сканируем транзакции...")
try:
history = load_history()
for address in ADDRESSES:
print(f"Проверяем транзакции для адреса: {address}")
try:
url = f"https://explorer.unit0.dev/api/v2/addresses/{address}/transactions"
transactions = fetch_transactions(url, HEADERS)
if not transactions:
print(f"Транзакций не найдено для адреса: {address}")
continue

for tx in transactions:
tx_id = tx['hash']
if tx_id not in history.get(address, []):
print(f"Найдена новая транзакция: {tx_id} для адреса: {address}")
try:
message = format_transaction_message(tx)
bot.send_message(chat_id=CHAT_ID, text=message, parse_mode="HTML")
except Exception as e:
print(f"Ошибка при отправке сообщения для транзакции {tx_id}: {e}")

if address not in history:
history[address] = []
history[address].append(tx_id)

save_history(history)
except Exception as e:
print(f"Ошибка при получении транзакций для {address}: {e}")
except Exception as e:
print(f"Непредвиденная ошибка: {e}")

print(f"Сканирование завершено. Ожидание {DELAY} секунд...
")
time.sleep(DELAY)

Решение:

  1. Создаётся объект бота с помощью Bot(token=BOT_TOKEN).
  2. Запускается бесконечный цикл, в котором выводится информационное сообщение "Сканируем транзакции...".
  3. Обёртка try используется для безопасного получения истории транзакций с помощью load_history().
  4. Для каждого адреса из списка ADDRESSES:
    \ta. Выводится сообщение "Проверяем транзакции для адреса: {address}".
    \tb. Выполняется попытка получить список транзакций с помощью fetch_transactions(address, HEADERS) (вызов функции сделан без формирования URL – по аналогии со вторым примером).
    \tc. Если транзакций не найдено, выводится сообщение об этом и происходит переход к следующему адресу.
    \td. Для каждой полученной транзакции:
    - Извлекается идентификатор транзакции через tx.get("id").
    - Если транзакция новая (её id отсутствует в истории для данного адреса), выводится сообщение о новой транзакции.
    - Форматируется сообщение с информацией о транзакции через format_...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какова основная цель использования конструкции `try...except` при получении транзакций для каждого адреса в функции `monitor_addresses`?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет