Що робити, якщо чат-бот відповідає в ефірі двічі
Спочатку визначте тип дублю
Дві однакові відповіді поспіль — це не одна поломка, а щонайменше дві різні. Перший випадок: бот отримав одну подію, але двічі. Другий: подія прийшла одна, а надіслав він двічі. Лікуються вони по-різному, тому не починайте з правки коду — почніть з логів.
Відкрийте журнал бота й знайдіть момент дублю. Далі дивіться на два поля: ідентифікатор події та час отримання.
- Два запити з одним event_id (або message_id, notification_id — назва залежить від платформи) і різницею в мілісекунди — це повторна доставка однієї події. Шукайте дедуплікацію.
- Два запити з різними ідентифікаторами — на канал реально підписані два обробники. Шукайте другу підписку.
Якщо логів немає взагалі, почніть з панелей платформ: там видно, хто підписаний на події каналу.
Як виглядає подвійна підписка в панелях
Платформи не показують «бот підключений двічі» одним рядком. Ознаки розкидані по різних розділах.
Twitch
Перевірте розділ Connections у налаштуваннях акаунта — там список підключених застосунків. Один і той самий бот може бути авторизований і як застосунок каналу, і як застосунок вашого особистого акаунта. Плюс EventSub-підписки живуть окремо: застосунок може тримати активну підписку на channel.chat.message після того, як ви вимкнули інтеграцію в панелі. Другий екземпляр бота, запущений локально, теж отримує події нарівні з робочим.
YouTube
Тут частіше винний не сам бот, а доступ до чату: бот підключений до трансляції і як модератор, і як окремий акаунт-учасник. Дивіться список модераторів і список авторизованих застосунків каналу. Окремо — якщо бот працює через кілька проєктів Google Cloud, ключі можуть ходити двома різними шляхами.
Discord
Найнаочніший випадок: два застосунки з однаковим токеном на одному сервері. Обидва бачать повідомлення в каналі й обидва на нього відповідають. Перевірте список ботів на сервері й переконайтеся, що до каналу не підключений другий вебхук з тим самим ім'ям.
Мінус цього шляху — потрібен доступ не лише до бота, а й до панелей каналу. Якщо канал ведуть кілька людей, другий екземпляр міг підняти хтось інший, і ви про це не знаєте.
Повтор вебхука: чому подія приходить двічі
Зовнішній сервіс доставляє вебхук і чекає на підтвердження. Не дочекався за відведений час — надсилає ще раз. Другий запит несе ту саму подію, але бот сприймає його як нову й відповідає знову. Таке трапляється за будь-якого підвисання сервера: що більше навантаження, то частіше.
Лікується дедуплікацією на боці бота. Потрібен ключ, який однаковий для всіх копій однієї події й унікальний для різних. Ключ береться з тіла запиту або заголовків — це залежить від API, але схема однакова.
Приклад ключа дедуплікації
Уявіть вебхук про новий донат. У тілі приходить об'єкт із полем id — унікальним номером транзакції, який не змінюється при повторній доставці. Логіка така:
- Отримавши запит, витягніть id з тіла.
- Перевірте у сховищі (Redis, таблиця в базі), чи траплявся він за останню, скажімо, добу.
- Якщо траплявся — дайте сервісу відповідь «прийнято» й нічого не надсилайте в чат.
- Якщо ні — запишіть і обробіть як зазвичай.
Ключ має бути саме з події, а не згенерований вами: якщо генерувати свій, у двох доставок однієї події вийдуть різні ключі, і дедуплікація не спрацює. Деякі платформи дають готовий заголовок з ідентифікатором доставки — тоді беріть його, це надійніше. Мінус підходу — потрібне сховище й політика очищення, інакше база ключів росте без межі.
Якщо дубль прийшов із двох різних джерел
Окрема історія — коли подія не повторюється, а реально приходить із двох місць. Класика: бот відповідає на команду і в чаті, і в пересиланні між платформами через міст. Або автовідповідь налаштована на два тригери, які спрацьовують на одну й ту саму фразу.
Такі дублі відрізняються від повтору вебхука за логами: у запитів різні джерела (різні платформи, різні обробники), але одна смислова подія. Шукайте перетин тригерів і вимкніть один із них. Для моста — не пересилайте повідомлення самого бота назад.
Перевірка перед ефіром
- Надішліть тестову команду й подивіться, скільки відповідей прийшло.
- Вимкніть усі інтеграції, крім однієї, повторіть.
- Вмикайте по одній, поки дубль не повернеться, — так знайдете винуватця.
- Звірте за логами ідентифікатор події в обох відповідях: однаковий — повтор доставки, різний — друга підписка.
Якщо причину не знайти, вимкніть автовідповідь на проблемну подію й напишіть у підтримку сервісу з логами й часом повтору. Поки чекаєте — ведіть чат вручну: краще втратити автоматизацію на вечір, ніж залити ефір однаковими фразами.
Останні статті
Що змінилося в дизайні та функціоналі Ми оновили сайт, щоб працювати з ним було швидше та зручніше. Основні зміни стосуються інтерфейсу, особистого к..
Доброго времени суток, собрал все новости за это время:1. Главная новость - сильно снижены цены на твич зрителей, пока твич откатил почти все защиты, ..
1. Використовуйте промокод "December2025" на 15% знижки для всіх наших глядачів2. Ми знизили до 1 січня базові ціни на наш конфігуратор і най дешевшу ..
Послуги Twitch працюють стабільно, тому ми готові співпрацювати з командами, реселерами, власниками сервісів, ботами і багатьма іншими.Індивідуальні..
Ми повністю оновили наші послуги перегляду Twitch, і тепер вони працюють стабільно. Ми використовуємо лише якісні IP-адреси для перегляду.Нюанс поля..
Всем доброго времени суток. Сегодня мы анонсируем новую функцию - "Конфигуратор Twitch зрителей".Теперь Вы сможете сами себе собрать любой тариф для т..
Приветствую, составил гайд для стримеров, который на данный момент будет очень актуален. Сейчас ютуб и твич отключили монетизацию с просмотров из ..
Мы наконец-то разработали API Теперь нашим сайтам партнерам будет удобнее с нами работать.По обновлению максимальных тарифов на ютуб - апдейт уже на п..
У зв'язку з величезною популярністю послуг партнерства та реферальної програми ми зробили таблицю співпраці.Суть дуже проста: більше живої аудиторії –..
Наші послуги для стрімерів

Shopee
Наші послуги для контент-мейкерів









