Skip to content

Instantly share code, notes, and snippets.

@karyura44
Last active October 1, 2025 21:44
Show Gist options
  • Select an option

  • Save karyura44/4137662f0c1ec733ad7825c459e1498b to your computer and use it in GitHub Desktop.

Select an option

Save karyura44/4137662f0c1ec733ad7825c459e1498b to your computer and use it in GitHub Desktop.
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.utils.exceptions import BotBlocked
import asyncio
import requests
bot = Bot(token="")
dp = Dispatcher(bot)
TEMPLATES = {
"1": 'Добрый день! Благодарим Вас за отзыв! Наша команда всегда рада вашей искренней обратной связи. Очень жаль, что Вы столкнулись с подобной ситуацией. К сожалению, мы не можем отследить поврежденный товар или недокомплект, просьба в таких случаях сдавать товар по браку, чтобы вывести его из оборота. С уважением и заботой о Вас, команда бренда **Миля & PILYA**',
"2": 'Добрый день! Благодарим Вас за обратную связь! Вы помогаете нам становиться лучше! Нам очень жаль, что наш товар полностью не оправдал Ваши ожидания. Наша главная особенность - *филигранный пошив и ровные строчки*, с каплей заботы и нежности к каждому покупателю. Рекомендуем Вам обратить внимание на модели. С уважением и заботой о Вас, команда **Миля & PILYA**',
"3": 'Здравствуйте! Благодарим Вас за отзыв! Мы рады, что Вам понравилось качество нашего товара и очень жаль, что Вам не подошел размер. Рекомендуем перед заказом сравнить свои параметры с размерной сеткой. У нас широкий размерный ряд, уверены, что Вы обязательно сможете выбрать для себя идеальный вариант. Рекомендуем обратить внимание на артикулы … С уважением и заботой о Вас, команда бренда **Миля & PILYA**',
"4": 'Добрый день! Благодарим Вас за оставленный отзыв! Жаль, что не подошла данная модель, приглашаем Вас ознакомиться с другим ассортиментом нашего бренда. Уверены, Вы найдете то, что подойдет именно Вам, высокого качества и по приятной цене. Надеемся, дальнейшие покупки в нашем магазине доставят вам только удовольствие. С уважением и заботой о Вас, команда бренда **Миля & PILYA**',
"5": 'Здравствуйте! Благодарим Вас за отзыв! Очень жаль, что Вы столкнулись с такой ситуацией. Вы нам очень поможете, если при получении подобных вещей, будете сдавать их по браку. Так вещь выйдет из оборота. Рекомендуем Вам оформить заказ повторно, Вы убедитесь в высоком качестве нашего товара Будем Вам рады, С уважением и заботой о Вас, команда бренда **Миля & PILYA**'
}
CHAT_IDS = [123456789] # Список идентификаторов чатов
PROCESSED_FEEDBACKS = {} # Словарь для отслеживания состояния отзывов
def get_feedbacks(filter_type):
url = "https://feedbacks-api.wildberries.ru/api/v1/feedbacks"
headers = {
"Authorization": ""
}
params = {
"isAnswered": False,
"take": 10,
"skip": 0,
"order": "dateDesc",
"hasSupplierComplaint": False
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
if filter_type == "low_rating":
# Фильтрация отзывов с оценкой ниже 4 или содержащих слова "мятый" или "рваный"
filtered_feedbacks = [item for item in data["data"]["feedbacks"] if item["productValuation"]
< 4 or "маломерит" in item["text"].lower() or "маломерка" in item["text"].lower() or "маломерки" in item["text"].lower() or "маломерок" in item["text"].lower() or "маломерке" in item["text"].lower() or "маломеркам" in item["text"].lower() or "маломерку" in item["text"].lower() or "маломерки" in item["text"].lower() or "маломеркой" in item["text"].lower() or "маломеркою" in item["text"].lower() or "маломерками" in item["text"].lower() or "маломерке" in item["text"].lower() or "большемерит" in item["text"].lower() or "большемерка" in item["text"].lower() or "большемерить" in item["text"].lower() or "длинновато" in item["text"].lower() or "длинноваты" in item["text"].lower() or "длинноватый" in item["text"].lower() or "длинноватое" in item["text"].lower() or "длинновато" in item["text"].lower() or "длинноватая" in item["text"].lower() or "длинноватой" in item["text"].lower() or "длинноватые" in item["text"].lower() or "длинноватых" in item["text"].lower() or "коротковато" in item["text"].lower() or "коротковатый" in item["text"].lower() or "коротковатое" in item["text"].lower() or "коротковатого" in item["text"].lower() or "коротковатая" in item["text"].lower() or "коротковатая" in item["text"].lower() or "коротковатые" in item["text"].lower() or "коротковатых" in item["text"].lower() or "слишком" in item["text"].lower() or "длинные" in item["text"].lower() or "длинные" in item["text"].lower() or "длинный" in item["text"].lower() or "длинное" in item["text"].lower() or "длинного" in item["text"].lower() or "длинная" in item["text"].lower() or "длинной" in item["text"].lower() or "длинных" in item["text"].lower() or "короткие" in item["text"].lower() or "короткий" in item["text"].lower() or "короткое" in item["text"].lower() or "короткого" in item["text"].lower() or "короткая" in item["text"].lower() or "короткой" in item["text"].lower() or "коротких" in item["text"].lower() or "огромное" in item["text"].lower() or "огромным" in item["text"].lower() or "огромный" in item["text"].lower() or "огомного" in item["text"].lower() or "огромная" in item["text"].lower() or "огромной" in item["text"].lower() or "огромные" in item["text"].lower() or "огромных" in item["text"].lower() or "мешок" in item["text"].lower() or "мешка" in item["text"].lower() or "мешки" in item["text"].lower() or "мешков" in item["text"].lower() or "заминка" in item["text"].lower() or "заминки" in item["text"].lower() or "заминок" in item["text"].lower() or "маловато" in item["text"].lower() or "маловатый" in item["text"].lower() or "маловатое" in item["text"].lower() or "маловатого" in item["text"].lower() or "маловатая" in item["text"].lower() or "маловатой" in item["text"].lower() or "маловатые" in item["text"].lower() or "маловатых" in item["text"].lower() or "маловата" in item["text"].lower() or "синтетика" in item["text"].lower() or "синтетик" in item["text"].lower() or "синтетики" in item["text"].lower() or "синтетиков" in item["text"].lower() or "синтетическое" in item["text"].lower() or "синтетический" in item["text"].lower() or "синтетического" in item["text"].lower() or "синтетическая" in item["text"].lower() or "синтетической" in item["text"].lower() or "синтетические" in item["text"].lower() or "синтетических" in item["text"].lower() or "хайп" in item["text"].lower() or "блестит" in item["text"].lower() or "блестеть" in item["text"].lower() or "липнет" in item["text"].lower() or "липнуть" in item["text"].lower() or "прилепает" in item["text"].lower() or "запах" in item["text"].lower() or "большое" in item["text"].lower() or "большим" in item["text"].lower() or "большая" in item["text"].lower() or "большое" in item["text"].lower() or "большой" in item["text"].lower() or "большого" in item["text"].lower() or "большая" in item["text"].lower() or "большие" in item["text"].lower() or "больших" in item["text"].lower() or "недостаток" in item["text"].lower() or "недостатка" in item["text"].lower() or "недостатки" in item["text"].lower() or "недостатков" in item["text"].lower() or "не понятный" in item["text"].lower() or "катышки" in item["text"].lower() or "катышками" in item["text"].lower() or "катышек" in item["text"].lower() or "катышка" in item["text"].lower() or "катышков" in item["text"].lower() or "дешево" in item["text"].lower() or "дешего" in item["text"].lower() or "дешевый" in item["text"].lower() or "дешевая" in item["text"].lower() or "неприятный" in item["text"].lower() or "неприятное" in item["text"].lower() or "неприятного" in item["text"].lower() or "неприятная" in item["text"].lower() or "неприятной" in item["text"].lower() or "неприятные" in item["text"].lower() or "неприятных" in item["text"].lower() or "Куцевато" in item["text"].lower() or "куцевато" in item["text"].lower() or "куцеватый" in item["text"].lower() or "куцеватое" in item["text"].lower() or "куцеватого" in item["text"].lower() or "куцеватое" in item["text"].lower() or "куцеватого" in item["text"].lower() or "куцеватая" in item["text"].lower() or "куцеватой" in item["text"].lower() or "куцеватые" in item["text"].lower() or "куцеватых" in item["text"].lower() or "грязное" in item["text"].lower() or "грязный" in item["text"].lower() or "грязного" in item["text"].lower() or "грязная" in item["text"].lower() or "грязной" in item["text"].lower() or "грязные" in item["text"].lower() or "грязных" in item["text"].lower() or "потрепанное" in item["text"].lower() or "красится" in item["text"].lower() or "окрашивается" in item["text"].lower() or "не подошло" in item["text"].lower() or "не подошла" in item["text"].lower() or "не подошли" in item["text"].lower() or "Липнет" in item["text"].lower() or "липнуть" in item["text"].lower() or "возрастных" in item["text"].lower() or "возрастной" in item["text"].lower() or "возрастное" in item["text"].lower() or "возрастного" in item["text"].lower() or "возрастная" in item["text"].lower() or "возрастные" in item["text"].lower() or "тяжелая" in item["text"].lower() or "тяжелый" in item["text"].lower() or "тяжелое" in item["text"].lower() or "носок" in item["text"].lower() or "носки" in item["text"].lower() or "минусы" in item["text"].lower() or "минус" in item["text"].lower() or "минуса" in item["text"].lower() or "минусов" in item["text"].lower() or "тонкое" in item["text"].lower() or "тонкий" in item["text"].lower() or "тонкого" in item["text"].lower() or "тонкая" in item["text"].lower() or "тонкой" in item["text"].lower() or "тонкие" in item["text"].lower() or "тонких" in item["text"].lower() or "неудобные" in item["text"].lower() or "неудобное" in item["text"].lower() or "неудобных" in item["text"].lower() or "неудобное" in item["text"].lower() or "неудобных" in item["text"].lower() or "неудобная" in item["text"].lower() or "неудобный" in item["text"].lower() or "неудобного" in item["text"].lower() or "жалею" in item["text"].lower() or "возврат" in item["text"].lower() or "изъян" in item["text"].lower() or "изъянами" in item["text"].lower() or "отказ" in item["text"].lower() or "колется" in item["text"].lower() or "колоться" in item["text"].lower() or "колючий" in item["text"].lower() or "колючая" in item["text"].lower() or "колючие" in item["text"].lower() or "колючее" in item["text"].lower() or "так себе" in item["text"].lower() or "в пользу другого" in item["text"].lower() or "в пользу другой" in item["text"].lower() or "смутило" in item["text"].lower() or "красит" in item["text"].lower() or "мятая" in item["text"].lower() or "мятый" in item["text"].lower() or "мятое" in item["text"].lower() or "странно" in item["text"].lower() or "странное" in item["text"].lower() or "Странная" in item["text"].lower() or "странный" in item["text"].lower() or "пятно" in item["text"].lower() or "сломано" in item["text"].lower() or "сломана" in item["text"].lower() or "сломан" in item["text"].lower() or "сломаны" in item["text"].lower() or "расстроилась" in item["text"].lower() or "дорого" in item["text"].lower() or "дорогой" in item["text"].lower() or "дорогая" in item["text"].lower() or "дорогое" in item["text"].lower() or "не подошло" in item["text"].lower() or "не подошла" in item["text"].lower() or "не подошел" in item["text"].lower() or "не подошли" in item["text"].lower() or "не подходит" in item["text"].lower() or "не красиво" in item["text"].lower() or "не красивый" in item["text"].lower() or "не красивая" in item["text"].lower() or "не красивые" in item["text"].lower() or "брак" in item["text"].lower() or "браком" in item["text"].lower() or "порвано" in item["text"].lower() or "порвана" in item["text"].lower() or "порваны" in item["text"].lower() or "порван" in item["text"].lower() or "широкий" in item["text"].lower() or "широкая" in item["text"].lower() or "широковато" in item["text"].lower() or "перезаказал" in item["text"].lower() or "перезаказала" in item["text"].lower() or "перезаказ" in item["text"].lower() or "перезаказали" in item["text"].lower() or "перезаказать" in item["text"].lower()]
elif filter_type == "high_rating":
# Фильтрация отзывов с оценкой 4 или 5 и не содержащих слова "мятый" или "рваный"
filtered_feedbacks = [item for item in data["data"]["feedbacks"] if item["productValuation"] >= 4 and not (
"маломерит" in item["text"].lower() or "маломерка" in item["text"].lower() or "маломерки" in item["text"].lower() or "маломерок" in item["text"].lower() or "маломерке" in item["text"].lower() or "маломеркам" in item["text"].lower() or "маломерку" in item["text"].lower() or "маломерки" in item["text"].lower() or "маломеркой" in item["text"].lower() or "маломеркою" in item["text"].lower() or "маломерками" in item["text"].lower() or "маломерке" in item["text"].lower() or "большемерит" in item["text"].lower() or "большемерка" in item["text"].lower() or "большемерить" in item["text"].lower() or "длинновато" in item["text"].lower() or "длинноваты" in item["text"].lower() or "длинноватый" in item["text"].lower() or "длинноватое" in item["text"].lower() or "длинновато" in item["text"].lower() or "длинноватая" in item["text"].lower() or "длинноватой" in item["text"].lower() or "длинноватые" in item["text"].lower() or "длинноватых" in item["text"].lower() or "коротковато" in item["text"].lower() or "коротковатый" in item["text"].lower() or "коротковатое" in item["text"].lower() or "коротковатого" in item["text"].lower() or "коротковатая" in item["text"].lower() or "коротковатая" in item["text"].lower() or "коротковатые" in item["text"].lower() or "коротковатых" in item["text"].lower() or "слишком" in item["text"].lower() or "длинные" in item["text"].lower() or "длинные" in item["text"].lower() or "длинный" in item["text"].lower() or "длинное" in item["text"].lower() or "длинного" in item["text"].lower() or "длинная" in item["text"].lower() or "длинной" in item["text"].lower() or "длинных" in item["text"].lower() or "короткие" in item["text"].lower() or "короткий" in item["text"].lower() or "короткое" in item["text"].lower() or "короткого" in item["text"].lower() or "короткая" in item["text"].lower() or "короткой" in item["text"].lower() or "коротких" in item["text"].lower() or "огромное" in item["text"].lower() or "огромным" in item["text"].lower() or "огромный" in item["text"].lower() or "огомного" in item["text"].lower() or "огромная" in item["text"].lower() or "огромной" in item["text"].lower() or "огромные" in item["text"].lower() or "огромных" in item["text"].lower() or "мешок" in item["text"].lower() or "мешка" in item["text"].lower() or "мешки" in item["text"].lower() or "мешков" in item["text"].lower() or "заминка" in item["text"].lower() or "заминки" in item["text"].lower() or "заминок" in item["text"].lower() or "маловато" in item["text"].lower() or "маловатый" in item["text"].lower() or "маловатое" in item["text"].lower() or "маловатого" in item["text"].lower() or "маловатая" in item["text"].lower() or "маловатой" in item["text"].lower() or "маловатые" in item["text"].lower() or "маловатых" in item["text"].lower() or "маловата" in item["text"].lower() or "синтетика" in item["text"].lower() or "синтетик" in item["text"].lower() or "синтетики" in item["text"].lower() or "синтетиков" in item["text"].lower() or "синтетическое" in item["text"].lower() or "синтетический" in item["text"].lower() or "синтетического" in item["text"].lower() or "синтетическая" in item["text"].lower() or "синтетической" in item["text"].lower() or "синтетические" in item["text"].lower() or "синтетических" in item["text"].lower() or "хайп" in item["text"].lower() or "блестит" in item["text"].lower() or "блестеть" in item["text"].lower() or "липнет" in item["text"].lower() or "липнуть" in item["text"].lower() or "прилепает" in item["text"].lower() or "запах" in item["text"].lower() or "большое" in item["text"].lower() or "большим" in item["text"].lower() or "большая" in item["text"].lower() or "большое" in item["text"].lower() or "большой" in item["text"].lower() or "большого" in item["text"].lower() or "большая" in item["text"].lower() or "большие" in item["text"].lower() or "больших" in item["text"].lower() or "недостаток" in item["text"].lower() or "недостатка" in item["text"].lower() or "недостатки" in item["text"].lower() or "недостатков" in item["text"].lower() or "не понятный" in item["text"].lower() or "катышки" in item["text"].lower() or "катышками" in item["text"].lower() or "катышек" in item["text"].lower() or "катышка" in item["text"].lower() or "катышков" in item["text"].lower() or "дешево" in item["text"].lower() or "дешего" in item["text"].lower() or "дешевый" in item["text"].lower() or "дешевая" in item["text"].lower() or "неприятный" in item["text"].lower() or "неприятное" in item["text"].lower() or "неприятного" in item["text"].lower() or "неприятная" in item["text"].lower() or "неприятной" in item["text"].lower() or "неприятные" in item["text"].lower() or "неприятных" in item["text"].lower() or "Куцевато" in item["text"].lower() or "куцевато" in item["text"].lower() or "куцеватый" in item["text"].lower() or "куцеватое" in item["text"].lower() or "куцеватого" in item["text"].lower() or "куцеватое" in item["text"].lower() or "куцеватого" in item["text"].lower() or "куцеватая" in item["text"].lower() or "куцеватой" in item["text"].lower() or "куцеватые" in item["text"].lower() or "куцеватых" in item["text"].lower() or "грязное" in item["text"].lower() or "грязный" in item["text"].lower() or "грязного" in item["text"].lower() or "грязная" in item["text"].lower() or "грязной" in item["text"].lower() or "грязные" in item["text"].lower() or "грязных" in item["text"].lower() or "потрепанное" in item["text"].lower() or "красится" in item["text"].lower() or "окрашивается" in item["text"].lower() or "не подошло" in item["text"].lower() or "не подошла" in item["text"].lower() or "не подошли" in item["text"].lower() or "Липнет" in item["text"].lower() or "липнуть" in item["text"].lower() or "возрастных" in item["text"].lower() or "возрастной" in item["text"].lower() or "возрастное" in item["text"].lower() or "возрастного" in item["text"].lower() or "возрастная" in item["text"].lower() or "возрастные" in item["text"].lower() or "тяжелая" in item["text"].lower() or "тяжелый" in item["text"].lower() or "тяжелое" in item["text"].lower() or "носок" in item["text"].lower() or "носки" in item["text"].lower() or "минусы" in item["text"].lower() or "минус" in item["text"].lower() or "минуса" in item["text"].lower() or "минусов" in item["text"].lower() or "тонкое" in item["text"].lower() or "тонкий" in item["text"].lower() or "тонкого" in item["text"].lower() or "тонкая" in item["text"].lower() or "тонкой" in item["text"].lower() or "тонкие" in item["text"].lower() or "тонких" in item["text"].lower() or "неудобные" in item["text"].lower() or "неудобное" in item["text"].lower() or "неудобных" in item["text"].lower() or "неудобное" in item["text"].lower() or "неудобных" in item["text"].lower() or "неудобная" in item["text"].lower() or "неудобный" in item["text"].lower() or "неудобного" in item["text"].lower() or "жалею" in item["text"].lower() or "возврат" in item["text"].lower() or "изъян" in item["text"].lower() or "изъянами" in item["text"].lower() or "отказ" in item["text"].lower() or "колется" in item["text"].lower() or "колоться" in item["text"].lower() or "колючий" in item["text"].lower() or "колючая" in item["text"].lower() or "колючие" in item["text"].lower() or "колючее" in item["text"].lower() or "так себе" in item["text"].lower() or "в пользу другого" in item["text"].lower() or "в пользу другой" in item["text"].lower() or "смутило" in item["text"].lower() or "красит" in item["text"].lower() or "мятая" in item["text"].lower() or "мятый" in item["text"].lower() or "мятое" in item["text"].lower() or "странно" in item["text"].lower() or "странное" in item["text"].lower() or "Странная" in item["text"].lower() or "странный" in item["text"].lower() or "пятно" in item["text"].lower() or "сломано" in item["text"].lower() or "сломана" in item["text"].lower() or "сломан" in item["text"].lower() or "сломаны" in item["text"].lower() or "расстроилась" in item["text"].lower() or "дорого" in item["text"].lower() or "дорогой" in item["text"].lower() or "дорогая" in item["text"].lower() or "дорогое" in item["text"].lower() or "не подошло" in item["text"].lower() or "не подошла" in item["text"].lower() or "не подошел" in item["text"].lower() or "не подошли" in item["text"].lower() or "не подходит" in item["text"].lower() or "не красиво" in item["text"].lower() or "не красивый" in item["text"].lower() or "не красивая" in item["text"].lower() or "не красивые" in item["text"].lower() or "брак" in item["text"].lower() or "браком" in item["text"].lower() or "порвано" in item["text"].lower() or "порвана" in item["text"].lower() or "порваны" in item["text"].lower() or "порван" in item["text"].lower() or "широкий" in item["text"].lower() or "широкая" in item["text"].lower() or "широковато" in item["text"].lower() or "перезаказал" in item["text"].lower() or "перезаказала" in item["text"].lower() or "перезаказ" in item["text"].lower() or "перезаказали" in item["text"].lower() or "перезаказать" in item["text"].lower())]
return filtered_feedbacks
else:
return []
async def check_feedbacks():
while True:
feedbacks = get_feedbacks("low_rating")
if feedbacks:
for feedback in feedbacks:
if not PROCESSED_FEEDBACKS.get(feedback['id'], False):
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton(
"Ответить", callback_data=f"reply_{feedback['id']}"))
text = f"Отзыв от {feedback['createdDate']}: {feedback['text']} (Оценка: {feedback['productValuation']})"
for chat_id in CHAT_IDS:
try:
await bot.send_message(chat_id, text, reply_markup=keyboard)
except BotBlocked:
print(
f"Бот был заблокирован пользователем с идентификатором чата {chat_id}")
await asyncio.sleep(300) # 5 минут
@ dp.message_handler(commands=['start'])
async def start_cmd_handler(message: types.Message):
await message.answer('👋 Привет! Я - *бот магазина женской одежды брендов Миля & PILYA*.\n\nС моей помощью ты сможешь:\n👗 Отслеживать негативные отзывы\n👗 Смотреть положительные отзывы\n👗 Отвечать на отзывы', parse_mode='Markdown')
keyboard_markup = InlineKeyboardMarkup(row_width=2)
keyboard_markup.add(
InlineKeyboardButton('👎 Негативные отзывы',
callback_data='low_rating'),
InlineKeyboardButton(
'👍 Положительные отзывы', callback_data='high_rating')
)
await message.answer('Выберите действие:', reply_markup=keyboard_markup)
@ dp.callback_query_handler(lambda c: c.data == "low_rating")
async def low_rating_callback(callback_query: types.CallbackQuery):
feedbacks = get_feedbacks("low_rating")
await bot.answer_callback_query(callback_query.id)
if feedbacks:
for feedback in feedbacks:
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton(
"Ответить", callback_data=f"reply_{feedback['id']}"))
text = f"Отзыв от {feedback['createdDate']}: {feedback['text']} (Оценка: {feedback['productValuation']})"
await bot.send_message(callback_query.from_user.id, text, reply_markup=keyboard)
else:
await bot.send_message(callback_query.from_user.id,
"Нет отзывов, удовлетворяющих заданным критериям")
@ dp.callback_query_handler(lambda c: c.data == "high_rating")
async def high_rating_callback(callback_query: types.CallbackQuery):
feedbacks = get_feedbacks("high_rating")
await bot.answer_callback_query(callback_query.id)
if feedbacks:
for feedback in feedbacks:
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton(
"Ответить", callback_data=f"reply_{feedback['id']}"))
text = f"Отзыв от {feedback['createdDate']}: {feedback['text']} (Оценка: {feedback['productValuation']})"
await bot.send_message(callback_query.from_user.id, text, reply_markup=keyboard)
else:
await bot.send_message(callback_query.from_user.id,
"Нет отзывов, удовлетворяющих заданным критериям")
@dp.callback_query_handler(lambda c: c.data.startswith("reply_"))
async def reply_callback(callback_query: types.CallbackQuery):
data = callback_query.data.split("_")
feedback_id = data[1]
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton("Выберите шаблон",
switch_inline_query_current_chat=""))
await bot.send_message(callback_query.from_user.id,
"Выберите шаблон из выпадающего меню:", reply_markup=keyboard)
await bot.answer_callback_query(callback_query.id)
@dp.inline_handler(lambda q: q.query == "")
async def inline_query(inline_query: types.InlineQuery):
results = []
for template_id, template_text in TEMPLATES.items():
keyboard = InlineKeyboardMarkup()
keyboard.row(
InlineKeyboardButton(
f"Отправить шаблон {template_id}", callback_data=f"send_reply_{template_id}"),
InlineKeyboardButton(
f"Отредактировать и отправить шаблон {template_id}", callback_data=f"edit_reply_{template_id}")
)
results.append(types.InlineQueryResultArticle(
id=template_id,
title=f"Шаблон {template_id}",
input_message_content=types.InputTextMessageContent(template_text),
reply_markup=keyboard
))
await bot.answer_inline_query(inline_query.id, results)
# Отправка ответа на отзыв в Wildberries
url = "https://feedbacks-api.wildberries.ru/api/v1/feedbacks"
headers = {
"Authorization": ""
}
data = {
"id": feedback_id,
"text": text
}
response = requests.patch(url, headers=headers, json=data)
if response.status_code == 200:
await bot.send_message(callback_query.from_user.id,
"Ответ на отзыв успешно отправлен в Wildberries")
else:
await bot.send_message(callback_query.from_user.id,
"Произошла ошибка при отправке ответа на отзыв в Wildberries")
# Отмечаем отзыв как обработанный
PROCESSED_FEEDBACKS[feedback_id] = True
async def on_startup(dp):
asyncio.create_task(check_feedbacks())
if __name__ == "__main__":
executor.start_polling(dp, on_startup=on_startup)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment