Простенький бот для телеги и API, но работает не так как надо, а как надо не работает.

Shuravi762

Новичок
Пользователь
Май 3, 2024
5
0
1
ДД!

Задача:
Чтобы бот писал сообщение в общий чат, когда один из менеджеров ставит статус "Звоню" у заказа. С настройкой бота сложностей не возникло, а вот с кодом что-то идёт не так.

Сам код:

Python:
from config import *
from insales import InSalesApi
from pprint import pprint
import time
import telebot
import pprint

api = InSalesApi.from_credentials(API_NAME,API_KEY, API_PASS)
bot = telebot.TeleBot(TG_TOKEN)

print("Запустился, работает.")

ids=[]
while True:
  orders = api.get_orders()
  for order in orders:
    if 'order-changes' in order:
      if order['order-changes'][0]['id'] not in ids and order['order-changes']['action']=='custom-status-changed' and order['order-changes']['value-is']=='Звоню':
        message=order['order-changes'][0]['user-name']+' звонит по заказу '+str(order['number'])
        print(message)
        ids.append(order['order-changes'][0]['id'])
        bot.send_message(TG_GROUP, message)
  time.sleep(2)  # 2 seconds


Важное уточнение, не знаю уже почему, но в API используется "_", а в коде должно использоваться "-", это не моя ошибка это как раз так надо.

Есть работающий код который я пытаюсь допилить:

Python:
from config import *
from insales import InSalesApi
from pprint import pprint
import time
import telebot
import pprint

api = InSalesApi.from_credentials(API_NAME,API_KEY, API_PASS)
bot = telebot.TeleBot(TG_TOKEN)

print("Запустился, работает.")

ids=[]
while True:
  orders = api.get_orders()
  for order in orders:
    if 'custom-status' in order:
      if order['custom-status']['permalink']=='zvonyu' and order['order-changes'][0]['id'] not in ids:
        message=order['order-changes'][0]['user-name']+' звонит по заказу '+str(order['number'])
        print(message)
        ids.append(order['order-changes'][0]['id'])
        bot.send_message(TG_GROUP,message)
  time.sleep(3) #3 секунд

Не устраивает тем, что он реагирует на любые изменения в заказе, которые отображаются в API, если не убрать статус "Звоню", а хотелось бы, чтобы писало 1 раз и не реагировало на остальыне изменения.
Понимаю, что во втором коде обращается к значению которое условно одно, а в первом к (как правильно сказать-то) массиву данных. Но как вычленить из массива нужные данные и чтобы еще не было проблем с типами переменных - не понимаю.

Если это не сложно и не очень долго и кто-то смог бы объяснить или скинуть мануал на похожее готовое решение, был бы очень благодарен.

Спасибо.
 
Последнее редактирование:

Shuravi762

Новичок
Пользователь
Май 3, 2024
5
0
1
в одно сообщение не поместилось

Код:
{
    "fields_values": [
      {
        "id": 218771765,
        "field_id": 11743660,
        "value": "1",
        "created_at": "2024-05-03T05:42:34.942+03:00",
        "updated_at": "2024-05-03T05:42:34.942+03:00",
        "type": "Чекбокс",
        "name": "Согласие на обработку данных",
        "handle": null
      }
    ],
    "order_lines": [
      {
        "id": 662912163,
        "order_id": 99405602,
        "sale_price": 2628,
        "full_sale_price": 2628,
        "total_price": 10512,
        "full_total_price": 10512,
        "discounts_amount": 0,
        "quantity": 4,
        "reserved_quantity": 0,
        "weight": null,
        "dimensions": null,
        "variant_id": 667983413,
        "product_id": 402295179,
        "sku": "1150037",
        "barcode": null,
        "title": "Kama Кама-365 НК-241 135/80 R12 72T",
        "unit": "pce",
        "comment": null,
        "updated_at": "2024-05-03T05:43:01.000+03:00",
        "created_at": "2024-05-03T05:42:34.000+03:00",
        "bundle_id": null,
        "vat": -1,
        "fiscal_product_type": 1,
        "requires_marking": null,
        "marking_codes": null,
        "accessory_lines": [],
        "external_variant_id": null
      }
    ],
    "order_changes": [
      {
        "id": 1478045516,
        "created_at": "2024-05-03T08:55:56.978+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478044762,
        "created_at": "2024-05-03T08:53:43.799+03:00",
        "action": "custom_status_changed",
        "value_was": "Согласован",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478044759,
        "created_at": "2024-05-03T08:53:41.455+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478044555,
        "created_at": "2024-05-03T08:52:47.303+03:00",
        "action": "custom_status_changed",
        "value_was": "Согласован",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478044473,
        "created_at": "2024-05-03T08:52:42.346+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478033854,
        "created_at": "2024-05-03T08:12:21.675+03:00",
        "action": "custom_status_changed",
        "value_was": "Согласован",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478033002,
        "created_at": "2024-05-03T08:10:54.677+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478032984,
        "created_at": "2024-05-03T08:10:43.926+03:00",
        "action": "custom_status_changed",
        "value_was": "Согласован",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478031805,
        "created_at": "2024-05-03T08:06:05.445+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478031712,
        "created_at": "2024-05-03T08:05:37.241+03:00",
        "action": "fulfillment_status_changed",
        "value_was": "declined",
        "value_is": "approved",
        "full_description": "Статус заказа изменен с 'Отменен' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478031711,
        "created_at": "2024-05-03T08:05:37.230+03:00",
        "action": "custom_status_changed",
        "value_was": "Отменен",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Отменен' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013317,
        "created_at": "2024-05-03T05:45:28.407+03:00",
        "action": "fulfillment_status_changed",
        "value_was": "approved",
        "value_is": "declined",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Отменен' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013316,
        "created_at": "2024-05-03T05:45:28.395+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Отменен",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Отменен' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013310,
        "created_at": "2024-05-03T05:45:23.710+03:00",
        "action": "custom_status_changed",
        "value_was": "Согласован",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013306,
        "created_at": "2024-05-03T05:45:21.910+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013280,
        "created_at": "2024-05-03T05:45:03.579+03:00",
        "action": "custom_status_changed",
        "value_was": "Согласован",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Согласован' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013279,
        "created_at": "2024-05-03T05:45:01.343+03:00",
        "action": "custom_status_changed",
        "value_was": "Звоню",
        "value_is": "Согласован",
        "full_description": "Статус заказа изменен с 'Звоню' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
 

Shuravi762

Новичок
Пользователь
Май 3, 2024
5
0
1
Код:
{
        "id": 1478013172,
        "created_at": "2024-05-03T05:43:01.894+03:00",
        "action": "fulfillment_status_changed",
        "value_was": "new",
        "value_is": "approved",
        "full_description": "Статус заказа изменен с 'Новый' на 'Согласован' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013171,
        "created_at": "2024-05-03T05:43:01.888+03:00",
        "action": "custom_status_changed",
        "value_was": "Новый",
        "value_is": "Звоню",
        "full_description": "Статус заказа изменен с 'Новый' на 'Звоню' пользователем Денис",
        "user_name": "Денис"
      },
      {
        "id": 1478013162,
        "created_at": "2024-05-03T05:42:35.150+03:00",
        "action": "order_created",
        "value_was": null,
        "value_is": null,
        "full_description": "Заказ создан пользователем Денис",
        "user_name": "Денис"
      }
    ],
    "discount": null,
    "shipping_address": {
      "id": 107910573,
      "fields_values": [],
      "name": "test",
      "surname": null,
      "middlename": null,
      "phone": "+71231231231",
      "full_name": "test",
      "full_locality_name": "г Москва",
      "full_delivery_address": "г Москва, 312",
      "address_for_gis": "г Москва, 312",
      "location_valid": true,
      "address": "312",
      "country": null,
      "state": "г Москва",
      "city": "Москва",
      "zip": null,
      "street": null,
      "house": null,
      "flat": null,
      "kladr_json": {
        "code": "7700000000000",
        "country": "RU",
        "state": "Москва",
        "state_type": "г",
        "area": null,
        "area_type": null,
        "city": "Москва",
        "city_type": "г",
        "settlement": null,
        "settlement_type": null,
        "street": null,
        "street_type": null,
        "latitude": "55.584227181635654",
        "longitude": "37.385439",
        "zip": "127349",
        "result": "г Москва",
        "last_level": "Москва",
        "last_level_type": "г",
        "region_zip": "101000",
        "is_kladr": true
      },
      "location": {
        "kladr_code": "7700000000000",
        "zip": null,
        "kladr_zip": "127349",
        "region_zip": "101000",
        "country": "RU",
        "state": "Москва",
        "state_type": "г",
        "area": null,
        "area_type": null,
        "city": "Москва",
        "city_type": "г",
        "settlement": null,
        "settlement_type": null,
        "address": "312",
        "street": "312",
        "street_type": null,
        "house": null,
        "flat": null,
        "is_kladr": true,
        "latitude": "55.584227181635654",
        "longitude": "37.385439",
        "autodetected": null
      }
    },
    "client": {
      "id": 80239904,
      "email": "dt@dt.dt",
      "name": "test",
      "phone": "+71231231231",
      "created_at": "2024-05-03T05:42:34.000+03:00",
      "updated_at": "2024-05-03T05:42:35.000+03:00",
      "comment": null,
      "registered": false,
      "subscribe": true,
      "client_group_id": null,
      "surname": null,
      "middlename": null,
      "bonus_points": 0,
      "type": "Client::Individual",
      "correspondent_account": null,
      "settlement_account": null,
      "consent_to_personal_data": null,
      "o_auth_provider": null,
      "messenger_subscription": true,
      "contact_name": "test",
      "progressive_discount": null,
      "group_discount": null,
      "ip_addr": "178.219.169.169",
      "fields_values": []
    },
    "discounts": [],
    "total_price": 10862,
    "items_price": 10512,
    "id": 99405602,
    "key": "0bf342405914f62ceb3be22659087472",
    "number": 117616,
    "comment": "",
    "archived": false,
    "delivery_title": "Курьером",
    "delivery_description": "Курьером (Доставка курьером в пределах МКАД. (За МКАД +40р за каждый километр, более 10км по согласованию с оператором))",
    "delivery_price": 350,
    "full_delivery_price": 350,
    "payment_description": "\u003Cp\u003EОплата наличными курьеру при получении заказа в московском регионе.\u003C/p\u003E",
    "payment_title": "Наличным курьеру.",
    "first_referer": "https://.../",
    "first_current_location": "/collection/...",
    "first_query": null,
    "first_source_domain": "...",
    "first_source": "Сайты",
    "referer": "https://yandex.ru/",
    "current_location": "/product/...",
    "query": null,
    "source_domain": "yandex.ru",
    "source": "Яндекс",
    "fulfillment_status": "approved",
    "custom_status": {
      "permalink": "soglasovan",
      "title": "Согласован"
    },
    "delivered_at": null,
    "accepted_at": "2024-05-03T05:43:01.000+03:00",
    "created_at": "2024-05-03T05:42:34.000+03:00",
    "updated_at": "2024-05-03T08:55:56.000+03:00",
    "financial_status": "pending",
    "delivery_date": null,
    "delivery_from_hour": null,
    "delivery_from_minutes": null,
    "delivery_to_hour": null,
    "delivery_to_minutes": null,
    "paid_at": null,
    "delivery_variant_id": 2160387,
    "payment_gateway_id": 950911,
    "margin": "0.0",
    "margin_amount": "0.0",
    "client_transaction_id": null,
    "currency_code": "RUR",
    "cookies": {
      "_ga": "GA1.1.1253499064.1709189185",
      "_ym_uid": "1709189184483709738",
      "referer": "https://yandex.ru/",
      "first_referer": "https://..../",
      "_ga_J0E15WTGWD": "GS1.1.1714704240.243.1.1714704274.0.0.0"
    },
    "account_id": 733415,
    "manager_comment": null,
    "locale": "ru",
    "delivery_info": {
      "delivery_variant_id": 2160387,
      "tariff_id": null,
      "title": null,
      "description": null,
      "price": "350.0",
      "shipping_company": null,
      "shipping_company_handle": null,
      "delivery_interval": {
        "min_days": null,
        "max_days": null,
        "description": ""
      },
      "errors": [],
      "warnings": [],
      "outlet": {
        "id": null,
        "external_id": null,
        "latitude": null,
        "longitude": null,
        "title": null,
        "description": null,
        "address": null,
        "payment_method": [],
        "source_id": null
      },
      "not_available": null
    },
    "responsible_user_id": null,
    "total_profit": "596.0"
  },
 

PYDEV

Пользователь
Пользователь
Авг 31, 2023
38
8
8
Задача не особо понятна. Но именно с написанием бота могу помочь, за моней))
 

Shuravi762

Новичок
Пользователь
Май 3, 2024
5
0
1
Задача не особо понятна. Но именно с написанием бота могу помочь, за моней))
те простейшая задача не понятна, но за деньги поможешь? ))) идеально )))
откуда вы такие только лезете.
 

PYDEV

Пользователь
Пользователь
Авг 31, 2023
38
8
8
те простейшая задача не понятна, но за деньги поможешь? ))) идеально )))
откуда вы такие только лезете.
Человек не различающий обычный словарь/json от API, я имел ввиду именно с написанием бота, чтобы он НЕ реагировал на любое действие. Ладно, бывай.
 

Shuravi762

Новичок
Пользователь
Май 3, 2024
5
0
1
Человек не различающий обычный словарь/json от API, я имел ввиду именно с написанием бота, чтобы он НЕ реагировал на любое действие. Ладно, бывай.

JSON это частный случай API, программного интерфейса приложений.
с такими знаниями проходите пожалуйста мимо.

массовые жертвы всяких "ойтишных" абортариев уже просто достали.
 

PYDEV

Пользователь
Пользователь
Авг 31, 2023
38
8
8
JSON это частный случай API, программного интерфейса приложений.
Сказал бы еще что это ЯП:LOL::LOL:
то что умеешь переходить по ссылке и читать информацию - уже радует. Продолжай в том же духе!
массовые жертвы всяких "ойтишных" абортариев уже просто достали.
Ну если вас наивного обманывают на деньги, это еще не означает все вокруг такие.
 

Форум IT Специалистов