ДД!
Задача:
Чтобы бот писал сообщение в общий чат, когда один из менеджеров ставит статус "Звоню" у заказа. С настройкой бота сложностей не возникло, а вот с кодом что-то идёт не так.
Сам код:
Важное уточнение, не знаю уже почему, но в API используется "_", а в коде должно использоваться "-", это не моя ошибка это как раз так надо.
Есть работающий код который я пытаюсь допилить:
Не устраивает тем, что он реагирует на любые изменения в заказе, которые отображаются в API, если не убрать статус "Звоню", а хотелось бы, чтобы писало 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 раз и не реагировало на остальыне изменения.
Понимаю, что во втором коде обращается к значению которое условно одно, а в первом к (как правильно сказать-то) массиву данных. Но как вычленить из массива нужные данные и чтобы еще не было проблем с типами переменных - не понимаю.
Если это не сложно и не очень долго и кто-то смог бы объяснить или скинуть мануал на похожее готовое решение, был бы очень благодарен.
Спасибо.
Последнее редактирование: