Простенький бот для телеги и 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
84
22
8
Задача не особо понятна. Но именно с написанием бота могу помочь, за моней))
 

Shuravi762

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

PYDEV

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

Shuravi762

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

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

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

PYDEV

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

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