Как сделать бота вконтакте отвечающего на сообщения: как создать + 7 примеров для беседы и комментариев

Число пострадавших при обрушении трибуны в Ростове-на-Дону выросло до 36 — РБК

adv.rbc.ru

adv.rbc.ru

adv.rbc.ru

Скрыть баннеры

Ваше местоположение ?

ДаВыбрать другое

Рубрики

Курс евро на 3 июня
EUR ЦБ: 87,1 (+0,52) Инвестиции, 02 июн, 16:14 Курс доллара на 3 июня
USD ЦБ: 80,88 (-0,09) Инвестиции, 02 июн, 16:14

Власти США объяснили взрыв под Вашингтоном падением самолета Политика, 23:21

Курский губернатор сообщил о сбитом над Суджей беспилотнике «Азова» Политика, 23:13

Кадыров предложил направить чеченские силы в Белгородскую область Политика, 23:06

adv. rbc.ru

adv.rbc.ru

Нетаньяху обвинил МАГАТЭ в капитуляции перед Ираном Политика, 22:57

Суд в Москве арестовал двух белгородских предпринимателей Бизнес, 22:28

В Харьковской области прогремели взрывы Политика, 22:23

В Армении заявили о проблемах из-за участия в ОДКБ Политика, 22:21

ChatGPT: как превратить нейросеть в помощника

На интенсиве РБК Pro вы научитесь использовать чат-бот для решения ваших задач

Купить интенсив

В Армении допустили подписание мирного договора до конца года Политика, 22:07

РПЛ назвала лучшего игрока и тренера сезона Спорт, 21:54

На акциях в поддержку Навального прошли задержания Политика, 21:50

SpaceX снова перенесла запуск грузового корабля Dragon Технологии и медиа, 21:33

Салливан допустил, что ВСУ отобьют «стратегически важную территорию» Политика, 21:30

Бензема спас «Реал» от поражения в последнем матче за клуб Спорт, 21:27

Аутсайдеры выбились в лидеры. Кто вошел в число лучших футболистов РПЛ Спорт, 21:00

adv.rbc.ru

adv.rbc.ru

adv.rbc.ru

При обрушении трибуны в Ростове-на-Дону пострадали 36 человек. Об этом сообщил губернатор Ростовской области Василий Голубев, передает «РБК Ростов».

Ранее он сообщал о 26 пострадавших, в том числе 15 детях. Также погибла женщина.

adv.rbc.ru

adv.rbc.ru

Трибуна обрушилась во время детского соревнования по футболу на стадионе на Гребном канале по адресу улица Пойменная, 2А днем 30 мая. Тогда на площадке играли команды «Ростов» — «Батайск». На трибунах находилось около 30 человек.

Сооружение обрушилось из-за шквального ветра — трибуну опрокинул один из порывов, говорил Голубев. Также во время матча начались сильный дождь, ветер и град. Люди спрятались от него под трибунами, сообщали РБК в МЧС региона.

После обрушения трибуны Следственный комитет завел уголовное дело по п. «в» ч. 2 ст. 238 УК (выполнение работ и оказание услуг, не отвечающих требованиям безопасности и повлекших по неосторожности смерть человека). Виновным грозит до шести лет лишения свободы.

В Краснодаре запретили использовать вывески на иностранных языках

В Краснодаре запретили вывески на иностранных языках Городская дума Краснодара запретила вывески на иностранных языках (включая названия с транслитерацией). Об этом сообщается на сайте городской админис …

«Не язык народов РФ»: в Краснодаре запретили вывески на иностранных языках Использовать иностранный язык и транслитерацию на вывесках запретили в Краснодаре по решению городской думы. Исключение сделали только для компаний, …

В Краснодаре официально запретили рекламные вывески на иностранных языках В Краснодаре теперь нельзя будет использовать иностранные языки для оформления вывесок. Такое решение приняли депутаты городской думы на 57-м заседан …

Депутаты Краснодара запретили рекламные вывески на иностранных языках Депутаты Краснодара запретили рекламные вывески на иностранных языках. На их обилие ранее обратил внимание мэр города, отметивший, что это «как-то не …

Депутаты гордумы Краснодара запретили вывески на иностранных языках 29 мая они согласовали новые правила благоустройства, включив туда и бан на использование иностранного языка в названиях магазинов и контор. Нововвед …

Вывески на иностранных языках исчезнут с улиц одного российского города с 1 сентября В Краснодаре запретят вывески на иностранных языках с сентября этого года, чтобы единообразить облик города. Об этом рассказали в пресс-службе админи …

Рекламные вывески с иностранными словами запретили в Краснодаре Мэр Градоначальник заявил, что иностранные вывески — это «как-то не патриотично, и в Лондоне и Вашингтоне, наверное, нет рекламы на русском». После э …

В Краснодаре официально запретили использовать иностранные слова на рекламных вывесках Власти Краснодара законодательно запретили использовать иностранные слова на вывесках в городе. Соответствующее ограничение вступит в силу с 1 марта …

В Краснодаре все вывески будут только на русском языке В Краснодаре собственники организаций должны будут до 1 марта 2024 года привести в порядок вывески на въездных маршрутах, все остальные — до 1 сентяб …

В Краснодаре объяснили запрет на вывески на иностранном языке Заместитель председателя городской Думы Краснодара Геннадий Уфимцев объяснил введенный в городе запрет на вывески на иностранном языке. В беседе с «Л …

EADaily: в Краснодаре останутся вывески только на русском языке В соответствии с утвержденными Правилами благоустройства города, в Краснодаре на магистральных улицах и в центре должны оставаться только вывески на …

Давно пора: в Краснодаре теперь останутся вывески только на русском языке В Краснодаре на магистральных улицах и в центре города должны остаться вывески только на русском языке. Об этом говорится в утвержденных Правилах бла …

Голосовой помощник «Алиса» заговорит на иностранных языках Компания «Яндекс» начала искать специалистов для разработки системы понимания естественных языков и «международного движка» для своего голосового асс …

В Башкирии запретили использовать беспилотники Глава Башкирии Радий Хабиров выпустил указ, согласно которому в регионе запрещено использовать беспилотные летательные аппараты. Применять беспилотни …

В Чувашии запретили использовать беспилотники Жителям Чувашии запретили использовать беспилотники без разрешения региональных властей, сообщил губернатор Олег Николаев в своем Telegram-канале …

В Серпухове запретили использовать беспилотники В Серпухове ввели запрет на использование беспилотных летательных аппаратов. Об этом сообщается на сайте администрации муниципалитета. Отмечается, чт …

В Ленобласти запретили использовать беспилотники В воскресенье в Ленобласти начал действовать запрет на использование беспилотников. Как уточняется в сообщении в Telegram-канале администрации регион …

В Курской области запретили использовать беспилотники Об этом глава региона Роман Старовойт рассказал у себя в социальных сетях вечером 19 мая. — В Курской области прoдолжают действoвать средний ур …

Матвиенко предложила использовать изобретения без согласия иностранных правообладателей По мнению председателя Совфеда, это будет вполне оправдано, «если вопрос касается безопасности нашего государства или здоровья населения». …

В Липецкой области запретили использовать БПЛА и пиротехнику Власти Липецкой области ввели полный запрет на использование гражданами всех типов беспилотных летательных аппаратов (БПЛА) любой массы и типа, а так …

В России запретили использовать шипованные шины летом На использование зимних шин летом, а летних — зимой в России установлен запрет. Об этом следует из соответствующего постановления правительства РФ. Чи …

Власти Украины запретили использовать буквы «Z» и «V» на номерах Власти Украины запретили использовать буквы «Z» и «V» на индивидуальных номерных знаках, если они используются в контексте поддержки проводимой Росси …

На Украине запретили использовать символы Z или V на номерных знаках И если транспортный номер был изготовлен ранее, то владельцу автомобиля придётся сделать другой.The post На Украине запретили использовать символы Z …

СМИ: С 2022 года 39 регионов запретили использовать беспилотники В ряде регионов установлен временный режим ограничения на использование воздушного пространства. …

На территории Ленинградской области запретили использовать беспилотники Запрет на использование беспилотников введут на территории всей Ленинградской области. Об этом сообщил губернатор региона Александр Дрозденко в Teleg …

В российском регионе в праздничные дни запретили использовать беспилотники В Кемеровской области запретили использовать беспилотные летательные аппараты (БПЛА) в праздничные дни. Об этом в пятницу, 5 мая, сообщил губернатор …

В России запретили использовать автомобили с шинами не по сезону В России с 1 сентября вводится запрет на использование летних шин зимой, а зимних — летом, следует из постановления правительства. Меры распространяю …

Беспилотники запретили использовать на параде Победы во Владивостоке Беспилотники запретили использовать на параде Победы во Владивостоке, сообщает МВД по Приморскому краю. По данным приморской полиции, на парад нельзя …

В Южной Осетии запретили использовать дроны на праздники Совет безопасности Южной Осетии запретил использовать беспилотники во время мероприятий, посвященных Дню Победы 9 мая, сообщили «Интерфаксу» в пресс- …

В России запретили использовать авто с шинами не по сезону С 1 сентября 2023 года в России нельзя будет использовать зимние шины летом, а летние — зимой. Изменения внесены в перечень неисправностей и ус .. .

Власти Геленджика запретили использовать парашюты и дельтапланы Власти Геленджика запретили использовать квадрокоптеры, парашюты и дельтапланы в небе над городом. Как сообщили в пресс-службе администрации города, …

Американские вакцины Moderna и Pfizer запретили использовать в США Штаты фактически признали, что их препараты от коронавируса опасны для здоровья. Местное управление по надзору за качеством пищевых продуктов и медик …

Флаги России и Украины запретили использовать в Берлине 8 и 9 мая Об этом пишут местные СМИ.The post Флаги России и Украины запретили использовать в Берлине 8 и 9 мая first appeared on КМВ Новости. …

В Коми запретили использовать дроны в границах промышленных объектов Пресс-служба руководства республики Коми проинформировала, что с 1 июня в регионе вводится запрет на использование беспилотников в границах зон 28 пр …

В Новосибирске запретили использовать дроны на параде в честь Дня Победы В Новосибирске во время парада в честь Дня Победы запрещается использовать любые беспилотные летательные аппараты. Об этом рассказал заместитель руко …

В Новосибирске запретили использовать беспилотники во время парада Победы В Новосибирске будет запрещено использовать беспилотные летательные аппараты во время парада Победы. Замглавы администрации губернатора, руководитель …

Власти Украины запретили использовать символы Z и V на транспортных номерах МВД Украины объявило о запрете использовать символы Z и V на индивидуальных транспортных номерных знаках.«О номерных знаках государственной регистрац …

В Иркутской области запретили использовать дроны на майские праздники В Иркутской области ввели запрет на использование беспилотных летательных аппаратов. Об этом 6 мая сообщил губернатор региона Игорь Кобзев.«Запрет бу …

Какие регионы запретили использовать дроны и что грозит нарушителям Запреты на беспилотники в целях безопасности регионы стали вводить еще в 2022 году. РБК разбирался, где действуют ограничения и что грозит их нарушит . ..

В России запретили использовать шипованные шины в летний сезон Правительство Российской Федерации приняло постановление, согласно которому использование шипованных шин летом и отсутствие зимних шин внесено в пере …

Власти Иркутской области запретили использовать беспилотники в регионе В Иркутской области запретили использовать беспилотные летательные аппараты (БПЛА) на территории региона. Соответствующий указ подписал губернатор ре …

Студентам колледжа в Оксфорде запретили использовать местоимения при обращении к трансгендерам Студентам колледжа в Оксфордском университете под угрозой отчисления запретили при обращении к трансгендерам использовать местоимения, которые те счи …

Россиянам запретили использовать летнюю резину зимой, а шипованную – летом Правительство РФ приняло постановление, расширяющее перечень условий, при которых запрещено пользоваться транспортными средствами. Один из пунктов за . ..

В России запретили использовать летние шины зимой и зимние — летом В России с 1 сентября запретят использовать шины не по сезону: зимнюю «резину» летом, а летнюю – зимой. Ограничения следуют из соответствующего поста …

В России запретили использовать летние шины зимой и «шиповку» летом Правительство России приняло постановление, запрещающее езду на автомобилях с шинами не по сезону. Соответствующий документ опубликован на портале оф …

«Крематорий» зазвучал на разных языках Группа «Крематорий» выпустила новый сборник «The Big One». В него вошли известные песни коллектива, исполненные приглашёнными вокалистами… …

Пост в блоге:Прямая речь. Наталья Кузеванова, заведующая кафедрой иностранных языков, о роли иностранных языков в международной школе и смыслах для их изучения Что такое международная школа? Чему в ней учат? Чем может одна международная школа отличаться от другой? Насколько успешны дети в изучении языков в т . ..

В Курске демонтируют вывески не по дизайн-коду 26 апреля на улицах Ленина, Невского и Добролюбова прошёл демонтаж вывесок, не отвечающих требованиям дизайн-кода Курска.Всем собственникам вывесок н …

Вывески на улицах города заменят до 26 июля В своем официальном сообществе в VKадминистрация Великих Лук сообщила, что работа по внедрению Дизайн-кода уже активно ведется. Идея Дизайн кода, кот …

В центре Курска демонтировали рекламные вывески На улицах Ленина, Добролюбова и Невского в городе Курске 26 апреля прошли работы по демонтажу рекламных вывесок, которые не соответствуют требованиям …

«Антиплагиат» научили искать заимствования на 100 языках мира Российские разработчики создали уникальную систему поиска плагиата, поддерживающую 100 языков мира. Новый алгоритм «Антиплагиата» не просто проверяет …

«Яндекс» обучит «Алису» говорить на других языках «Яндекс» начал работу по дополнительному обучению новым языкам своего голосового помощника «Алиса». Ранее проект пришлось при …

Гордума Краснодара запретила вывески на иностранном языке Депутаты гордумы Краснодара одобрили идею запрета оформления вывесок на иностранном языке, кроме зарегистрированных товарных знаков, сообщили в админ …

Жителей Москвы возмутили англоязычные вывески на ВДНХ pxhere.comВывески ресторанов на ВДНХ возмутили жителей Останкинского района Москвы. Они пожаловались на заведения чиновникам.Группа активистов района …

Компания Google научила чат-бот Bard писать программы на 20 языках За последние пару лет развитие искусственного интеллекта (ИИ) получило новый толчок, уже сейчас есть платформы, которые могут создавать изображения п …

В России создали систему поиска плагиата на 100 языках мира Система «Антиплагиат» получила новый функционал, в рамках которого сможет находить текстовые совпадения в научных работах, литературных произведениях …

В новосибирских ТЦ на местах ушедших брендов появились новые вывески В Новосибирске в торговых центрах на местах ушедших брендов, принадлежащих испанской компании Inditex, начали появляться новые вывески, сообщает NGS.

В защиту одной вывески. Решение Сената 1899 года Полит.ру и телеграм-канал Государственного архива Российской Федерации «Документальное прошлое» продолжают совместный проект «Документ недели». Сегод …

В РФ создали систему поиска плагиата на 100 языках мира на технологии нейроанализа и ИИ Система «Антиплагиат» получила новый функционал, в рамках которого сможет находить текстовые совпадения в научных работах, литературных произведениях …

Радий Хабиров ответил на вопрос министра обороны Украины на двух языках Радий Хабиров рассказал, что во время его службы в рядах Советской Армии вместе с ним также служило много простых, нормальных парней из Украинской СС …

Привет, бонжур, хэлло: «Яндекс» научит «Алису» говорить на новых языках Компания нанимает разработчиков, которые помогут голосовому ассистенту подтянуть языки ближнего зарубежья —и уже нанимают для этого специалистов. Ком …

Володин назвал английский язык мертвым и призвал говорить на национальных языках Председатель ПА ОДКБ и спикер Государственной думы России Вячеслав Володин на заседании совета в Минске заявил, что английский язык сегодня «мертвы».

В Курске на улицах Ленина, Невского и Добролюбова демонтируют вывески не по дизайн-коду В Курске на ул. Ленина, Невского и Добролюбова демонтировали рекламные конструкции (вывески), которые не отвечают требованиям дизайн-кода. Ранее всем …

Польша хочет переименовать Калининград в Крулевец. Как еще российские города называются в других языках Польская комиссия по стандартизации географических названий за пределами Польской Республики постановила, что «для города с русским названием Калинин …

Чат-бот Bard от Google научился писать и отлаживать код на C++, Java, Javascript, Python и других языках В чат-боте Bard от Google появилась возможность генерировать и отлаживать исходный код на 20 языках программирования. В списке есть C++, Go, Java, Ja …

ChatGPT от Google вскоре будет и на русском. Генеративный ИИ Bard в ближайшее время заговорит на 40 новых языках На вчерашней презентации компания Google объявила, что её генеративный ИИ Bard стал более широко доступным для пользователей. Пока лишь на английском …

«Гермес» вместо «Кембриджа». Власти призвали саратовских рестораторов «проявить гражданскую позицию» и снять иностранные вывески Фото vk.com/cambridge_cafe Ситуация с переименованием ресторана «Кембридж» должна стать примером для владельцев других заведений в Саратове. Такое мн …

Аренда помещений в Краснодаре Многие люди хотят открыть собственный бизнес. Одно из необходимых для этого условий – наличие соответствующего помещения. Поэтому аренда помеще …

В Краснодаре произошел взрыв В Краснодаре в 4:17 по местному времени (совпадает с московским) произошел взрыв в районе улицы Морская, сообщает региональный оперативный штаб. …

На электроподстанции в Краснодаре произошла авария Авария на электроподстанции произошла в Краснодаре, в городе отключены светофоры, приостановлено движение трамваев на центральных улицах. …

В Краснодаре взорвался газ в многоэтажном доме Взрыв газа стал причиной разрушения и пожара в квартире многоэтажного дома в Краснодаре. Об этом сообщил мэр города Евгений Наумов в своём Telegram-к …

Оперштаб подтвердил взрыв в Краснодаре Оперативный штаб подтвердил факт ЧП в центре Краснодара. Об этом сообщается в Telegram-канале штаба.Уточняется, что хлопок был слышен в районе здания …

В Краснодаре загорелся крупный лесопарк В Краснодаре в микрорайоне Гидростроителей загорелся крупный лесопарк, кадрами с места происшествия поделился Telegram-канал Kub Mash. На записи видн …

«Рубин» вырвал победу в Краснодаре Казанские футболисты переиграли «Краснодар-2». «Рубин» победил в Краснодаре. Казанские футболисты переиграли «Краснодар-2» со счётом 1:0 (0:0). Единс …

Очевидцы сообщили о взрыве в Краснодаре Жители Краснодара сообщили о том, что слышали громкие хлопки в воздухе, передает Telegram-канал «Осторожно, новости». По их словам, громкий хлопок бы …

Названа причина взрыва в Краснодаре Причиной утренних взрывов на улице Морской в Краснодаре стало падение двух беспилотников. Об этом в своем Telegram-канале заявил глава Краснодарского …

В Краснодаре отменили концерт рок-группы «Алиса» Global Look Press | Kirill Pochivalov/Russian LookКонцерт известной рок-группы «Алиса» отменили в Краснодаре. Также стало известно о переносе выступл …

Появились кадры с места хлопка в Краснодаре В распоряжении «Известий» 26 мая появились кадры с места хлопка газа в Краснодаре. Место хлопка оцеплено полицией. На кадрах можно увидеть, что фасад …

Хуниор Алонсо не уверен, что останется в «Краснодаре» Контракт парагвайца с «быками» рассчитан до лета 2025 года.Парагвайский защитник «Краснодара» Хуниор Алонсо признался, что пока не уверен, что остане …

В Краснодаре прошли традиционные «Корниловские поминовения» Память генерала и казаков, погибших в годы Гражданской войны, почтили на территории мемориального комплекса Лавра Корнилова и жертв Гражданской войны …

В Краснодаре прицеп отбросило на женщину после ДТП В Краснодаре на 39-летнюю женщину отбросило прицеп после столкновения с машиной. Об этом сообщает kp.ru. Полиция ищет водителя автомобиля. Отмечается …

Пожарные потушили возгорание в многоэтажке в Краснодаре Пожарные потушили пожар в многоэтажке Краснодара, возникший в результате взрыва газа. Об этом сообщил в среду, 24 мая, мэр краевой столицы Евгений На …

Власти подтвердили падение беспилотников в Краснодаре Причиной утреннего взрыва в Краснодаре стало падение двух беспилотных летательных аппаратов (БПЛА). Об этом сообщил губернатор Краснодарского края Ве …

Что известно о взрывах в Краснодаре. Фото, видео Утром 26 мая местные жители Краснодара сообщили о звуках взрыва в городе. URU.RU приводит всю информацию об атаке беспилотников по Краснодару, которы …

Сегодня утром в Краснодаре прогремел взрыв Фото: t.me/emnaumov Сегодня, 26 мая 2023 года, в ЕДДС поступило сообщение о хлопке в Краснодаре. Инцидент произошел в 04:17 по улице Морской, 54/2. И …

Рамирес ответил на вопрос, останется ли он в «Краснодаре» Футболист допустил, что может покинуть РПЛ. Эквадорский защитник «Краснодара» Кристиан Рамирес ответил на вопрос о том, останется ли он в составе «бык …

В Краснодаре построят приют для бездомных животных Муниципальный приют для бездомных животных построят в поселке Березовый на Кубани. Такое решение было принято на заседании городской думы, сообщил в …

Власти назвали причину взрыва в Краснодаре Причиной взрыва в Краснодаре стало падение двух беспилотников, заявил губернатор. Он заверил, что обошлось без жертв, не пострадала жизнеобеспечивающ …

В Краснодаре отменили концерт группы «Грот» В Краснодаре отменили концерт рэп-группы «Грот». Об этом сообщает «Коммерсантъ». Шоу должно было состояться в The Rock Bar 17 апреля в 20:00, но было …

Взрывоопасный предмет обнаружили на территории ЖК в Краснодаре Власти Краснодара ввели режим ЧС на территории жилого комплекса (ЖК) «Самолет» в связи с обнаружением взрывоопасного предмета, говорится в заявлении . ..

Quart Asyncio Python MessageQueue для бота Facebook Messenger

Я разрабатываю бота Facebook для мобильного авторемонта моего брата, который должен быть живым агентом поддержки, по сути, чтобы попытаться выяснить, в чем проблема, прежде чем он прыгнет. У меня есть это — изначально я отвечал на каждое сообщение. Но это приводит к обстоятельствам, когда такие люди, как я, печатают быстро и в нескольких сообщениях. Поэтому я создал класс MessageQueue, который на данный момент хранит все сообщения для каждой беседы локально в файле JSON (будет перемещен в базу данных, как только я это исправлю). Проблема в том, что как только пользователь отправляет X сообщений за промежуток времени без дополнительных сообщений (сейчас около 10 секунд), он должен обработать сообщения, а затем вернуть ответ и сохранить этот ответ в истории бесед.

Но поскольку это асинхронно и иногда выполняется несколько задач, последняя функция выполняется несколько раз, несколько раз добавляя сообщение бота в историю бесед.

Есть ли у кого-нибудь совет, как это исправить? Вот мой код

Также вот ответ, который я получаю для следующего изображения

, проблема в основном в том, что он должен просто иметь сообщения, которые пользователь отправляет + сообщения ботов в истории разговоров, и когда я отправляю несколько ответов, например. здесь предполагается только добавлять сообщения пользователей и «приветственное сообщение» от бота, но вместо этого он отправляет

 {
  "6764367863592357": {
    "Сообщения": [
      {
        "conv_id": "6764367863592357",
        "время": 1684887807029,
        "sender_id": "113272841265752",
        "text": "Хорошо, поехали"
      },
      {
        "conv_id": "6764367863592357",
        "время": 1684887812237,
        "sender_id": "113272841265752",
        "text": "проверить, правильно ли это записывается в txt-файл"
      },
      {
        "conv_id": "6764367863592357",
        "время": 1684887822.4400299,
        "sender_id": "бот",
        "text": "Добро пожаловать в Drew's Mobile Auto Repair, меня зовут Отто, и я ваш личный агент поддержки, который поможет вам начать работу.
Я могу помочь вам диагностировать ваши проблемы, обеспечить общую поддержку клиентов или помочь назначить встречу. Чтобы начать диагностики, пожалуйста, введите \"диагностировать\", в противном случае введите прочь!" }, { "conv_id": "6764367863592357", "время": 1684887822.4400299, "sender_id": "бот", "text": "Добро пожаловать в Drew's Mobile Auto Repair, меня зовут Отто, и я ваш личный агент поддержки, который поможет вам начать работу. Я могу помочь вам диагностировать ваши проблемы, обеспечить общую поддержку клиентов или помочь назначить встречу. Чтобы начать диагностики, пожалуйста, введите \"диагностировать\", в противном случае введите прочь!" }, { "conv_id": "6764367863592357", "время": 1684945914885, "sender_id": "113272841265752", "text": "Эй, это тестовое сообщение" }, { "conv_id": "6764367863592357", "время": 1684945918581, "sender_id": "113272841265752", "text": "Я добавляю второй" }, { "conv_id": "6764367863592357", "время": 1684945925218, "sender_id": "113272841265752", "text": "чтобы узнать, добавили ли вы три сообщения в беседу" }, { "conv_id": "6764367863592357", "время": 1684945935.
4484422, "sender_id": "бот", "text": "Я все еще учусь, этот ответ еще не запрограммирован!" }, { "conv_id": "6764367863592357", "время": 1684945935.4484422, "sender_id": "бот", "text": "Я все еще учусь, этот ответ еще не запрограммирован!" } ] } }
 @app.route("/", методы=["POST"])
асинхронное определение handle_incoming_messages():
    данные = ожидание запроса.get_json()
    print(f"Полученные данные: {данные}")
    если данные["объект"] == "страница":
        # Получить данные сообщения и отправить их на incoming_message
        если данные["запись"][0]:
            текст: str = данные["запись"][0]["обмен сообщениями"][0]["сообщение"]["текст"]
            sender_id = данные["запись"][0]["обмен сообщениями"][0]["отправитель"]["id"]
            conv_id = данные["запись"][0]["id"]
            время = данные["запись"][0]["время"]
            сообщение = сообщение (sender_id, время, conv_id, текст)
            app.
add_background_task (входящее_сообщение, sender_id, сообщение, разговоры) вернуть "ок", 200 импортировать json импорт ОС Сообщение класса: деф __инит__( себя, conv_id: ул, время: плавать, sender_id: ул, текст: ул, user_message: bool = Истина, ): self.conv_id = conv_id собственное время = время self.sender_id = отправитель_id селф.текст = текст self.user_message = пользовательское_сообщение защита to_dict(я): если self.user_message: возвращаться { "conv_id": self.conv_id, "время": само.время, "sender_id": self.sender_id, «текст»: self.text, } еще: возвращаться { "conv_id": self.conv_id, "время": само.время, "sender_id": "бот", «текст»: self.text, } определение to_ai_format (я): если self.
user_message: return f"Пользователь @ {self.time}: {self.text}" еще: return f"Отто @ {self.time}: {self.text}" Классный разговор: def __init__(self, conv_id: str, messages: list[Message]): self.conv_id = conv_id self.messages = сообщения защита to_dict(я): возвращаться { self.conv_id: { "сообщения": [message.to_dict() для сообщения в self.messages], } } определение to_ai_format (я): return "\n".join([message.to_ai_format() для сообщения в self.messages]) Классные беседы: имя_файла = "данные/разговоры.json" ai_file_name = "data/ai_conversations.txt" беседы: dict[str, беседа] = {} защита __init__(сам): self.conversations = self.load_conversations() деф load_conversations(я): если os.path.getsize(self.file_name) == 0: # Предполагается, что это пустой файл разговоры = {} еще: с open(self.file_name, "r+") как f: dict_conversations = json. load(f) разговоры = {} для конв в dict_conversations: сообщения = [] для сообщения в dict_conversations[conv]["messages"]: сообщения.добавлять( Сообщение( сообщение["conv_id"], сообщение["время"], сообщение["sender_id"], текст сообщения"], ) ) беседы[конв] = беседа(конв, сообщения) self.write_conversations() ответные разговоры определение write_conversations(я): с open(self.file_name, "w+") как f: для conv_id в self.conversations: f.write(json.dumps(self.conversations[conv_id].to_dict())) с open(self.ai_file_name, "w+") как f: для conv_id в self.conversations: f.write(self.conversations[conv_id].to_ai_format()) е. написать("\n\n") def update_conversation(self, chat_id: str, messages: list[Message]): первое_сообщение = Ложь если talk_id не в self.conversations: self.conversations[conversation_id] = Разговор( ид_беседы, сообщения ) первое_сообщение = Истина еще: для сообщения в сообщениях: self.conversations[идентификатор_беседы].messages.append(сообщение) self.write_conversations() вернуть first_message, self.conversations[conversation_id] @dataclass класс MessageQueue: """Класс для отслеживания сообщений, отправленных в течение последних TIMEOUT секунд сообщения, чтобы гарантировать, что бот не ответит 25 раз на 25 сообщений в течение TIMEOUT секунд""" conv_id: ул разговоры: разговоры задача: asyncio.Task | Нет = Нет сообщения: список[Сообщение] = поле(default_factory=список) время_последнего_сообщения: число с плавающей запятой = 0,0 async def handle_message (я, сообщение: сообщение): # теоретически каждое сообщение должно иметь уникальную временную метку. .. found_message = Ложь для сообщения в self.messages: если msg.time == message.time: found_message = Истина если не найдено_сообщение: self.messages.append(сообщение) self.last_message_time = время.время() # Теперь проверяем, является ли задача None, и если да, то создаем ее если не самостоятельная задача: self.task = asyncio.create_task(self.process_messages()) # Если задача не выполнена и мы получаем другое сообщение, мы отменяем задачу и создаем новую elif не self.task.done(): self.task.cancel() self.task = asyncio.create_task(self.process_messages()) Элиф self.task.done(): self.task = asyncio.create_task(self.process_messages()) вернуть самостоятельную задачу асинхронное определение process_messages (я): # Отправляем все сообщения ИИ и бэкенду # Теоретически это будет ждать TIMEOUT секунд от последнего полученного сообщения, а затем обновить все *текущие* сообщения # Не уверены, что это сработает, попробуем ожидание asyncio. sleep(TIMEOUT) если time.time() - self.last_message_time > ТАЙМ-АУТ: # Все сообщения были получены за последние 3 секунды # Добавляем в беседу все сообщения, на которые нам как-то нужна ссылка # self.conversations.update_conversation(self.conv_id, self.messages) Распечатать( f"Должно пройти {TIMEOUT} секунд с момента последнего сообщения, и мы ответим здесь" ) вернуть Истина вернуть ложь # Словарь объектов MessageQueue, по одному для каждой беседы, который будет содержать все сообщения для этого # разговор в очереди, пока человек не будет воспринят как выполненный MESSAGE_QUEUES: dict[str, MessageQueue] = {} # определить process_messages(): def send_message (recipient_id, сообщение: Сообщение): данные = { «получатель»: {«id»: идентификатор_получателя}, "сообщение": {"текст": сообщение.текст}, "messaging_type": "ОТВЕТ", "access_token": PAGE_ACCESS_TOKEN, } URL = f"https://graph. facebook.com/v17.0/{PAGE_ID}/messages" ответ = запросы. сообщение (url, json = данные) print(f"Ответ: {response.json()}") вернуть ответ.json() асинхронное определение incoming_message( sender_id: str, сообщение: сообщение, беседы: беседы ): # Создать MessageQueue, если она не существует для идентификатора конв., а затем вызывать handle_message для каждого сообщения если не message.conv_id в MESSAGE_QUEUES: MESSAGE_QUEUES[message.conv_id] = MessageQueue(message.conv_id, разговоры) задача = ожидать MESSAGE_QUEUES[message.conv_id].handle_message(сообщение) если задача не None: shouldUpdateMessages = ожидание задачи если следуетобновить сообщения: # Обновите беседу сообщениями и узнайте, является ли это началом беседы (первый раз, когда они отправили сообщение) # Также получаем user_conversation, у которого есть все сообщения в их беседе первое_сообщение, пользовательская_беседа = беседы.обновление_беседы( message. conv_id, MESSAGE_QUEUES[message.conv_id].messages ) # После того, как мы очистим очередь сообщений, так как все они были добавлены MESSAGE_QUEUES[message.conv_id].messages = [] # Если первое сообщение в беседе, мы отправляем приветственное сообщение если первое_сообщение: # Нам нужно добавить классификатор к объекту Message, чтобы увидеть, отправлено ли оно ИИ или нет # Last bool имеет значение True, если отправлено пользователем (по умолчанию), False, если отправлено ботом # Нам нужно добавить генерацию ИИ к объекту сообщения в другом ниже # TODO: Посмотрите, как остановить это выполнение дважды, проверьте, не отправлено ли уже сообщение ботом если ( user_conversation.messages[ len(user_conversation.messages) - 1 ].Удостоверение личности отправителя это не "бот" ): сообщение = сообщение( message. conv_id, time.time(), "бот", WELCOME_MESSAGE, False ) user_conversation.messages.append(сообщение) разговоры.update_conversation(сообщение.conv_id, [сообщение]) ответ = send_message (sender_id, сообщение) print(f"Ответ: {json.dumps(ответ, отступ=2)}") еще: # TODO: добавьте сюда генерацию ИИ с контекстом разговора # TODO: отформатируйте историю разговоров в удобочитаемом формате для ИИ. # TODO: Посмотрите, как остановить это выполнение дважды, проверьте, не отправлено ли уже сообщение ботом если ( user_conversation.messages[ len(user_conversation.messages) - 1 ].Удостоверение личности отправителя это не "бот" ): сообщение = сообщение( сообщение.conv_id, время. время(), "бот", "Я все еще учусь, эта реакция еще не запрограммирована!", ЛОЖЬ, ) user_conversation.messages.append(сообщение) разговоры.update_conversation(сообщение.conv_id, [сообщение]) ответ = send_message (sender_id, сообщение) print(f"Ответ: {json.dumps(ответ, отступ=2)}") еще: print(f"Задача отсутствует для {message.conv_id}")

Если у кого-то есть какие-либо советы, я был бы очень признателен, спасибо!!

  • Зак

python — Возможно ли, чтобы бот раздора ответил на сообщение, что сообщение, вызывающее бота, тоже ответило?

спросил

Изменено 1 год, 8 месяцев назад

Просмотрено 2к раз

Извините, это трудно объяснить, но мне любопытно, есть ли у бота способ ответить на сообщение, на которое отвечает вызов бота. Допустим, кто-то задает вопрос, и у меня есть бот вопросов и ответов, но человек, задающий вопрос, забывает позвонить боту. Как я могу сделать так, чтобы я мог ответить на их вопрос звонком бота и вопросом, но чтобы бот отвечал на то же сообщение, на которое я отвечаю, с ответом (не отвечал мне, кто звонил боту)

Я надеюсь это имеет смысл, лол. Если запутался в вопросе, может это прояснит.

Человек А задает вопросы (сообщение 1)

Человек Б отвечает на сообщение 1, звонит боту и задает ему вопрос (сообщение 2)

Бот отвечает на сообщение 1 ответом на вопрос — спросил человек Б в сообщении 2.

Возможно ли что-то подобное в python discord.py? Заранее спасибо!

  • python
  • discord.py

Если я правильно понял ваш вопрос, вы хотите ответить на ответное сообщение, верно? если да, то вы можете добиться этого, используя сообщение.ссылка . Приведенный ниже код ответит на ответное сообщение

 @bot. command().
асинхронный ответ по определению (ctx, arg):
    ссылка = ctx.message.reference
    если ссылка отсутствует:
        return await ctx.reply("Вы не ответили ни на одно сообщение")
    ожидание reference.resolved.reply(arg)
 

Это сначала получает указанное (отвеченное) сообщение, затем проверяет, нет ли его (в случае отсутствия ответа), и если оно отсутствует, то отправляет сообщение и останавливает функцию, в противном случае, если есть отвеченное сообщение, то он отвечает к этому сообщению, используя предоставленный аргумент вместо

Пример того, что это делает:

Вы также можете проверить наличие discord.DeletedReferencedMessage на случай, если ответное сообщение будет удалено

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *