Open MurzNN opened 5 years ago
Хм. Есть некоторый нюанс:
Соответственно, допустим, из VK приходит сообщение с id=2. Оно отправляется в матрицу , допустим как event_id=333. Чуть позже из ВК приходит опять сообщение, в котором id=2, но текст уже иной. Ну и флажок там тоже есть, что это обновление...
И вот, получается, что боту нужно понять, какое event_id в matrix обновлять... Бот, получается, должен хранить все соответствия vk_message_id=matrix_event_id. O_o Но это как-то накладно... Можно, конечно попытаться хранить "последние 20 сообщений для каждой комнаты, но это похоже на какой-то грязный хак, который правда будет покрывать 99% всех случаев редактирования сообщений :-/
Судя по остальным мостам в Матриксе - они все ведут свою базу данных с переправленными сообщениями, где хранится id внешнего сообщения и матриксового, так что видимо без аналогичного способа никак не решить проблему ;(
Ещё, как вариант, можно хранить id вк-шных сообщений как отдельное поле в json у m.message - я уточнил в комнате https://matrix.to/#/!jxlRxnrZCsjpjDubDX:matrix.org/$JORIf-2lCprGR5_099_Vld5XuSv8SVvrpKBiA0layrk?via=matrix.org&via=mozilla.org&via=privacytools.io - сказали что это норм вариант. Непонятно только как потом выискивать сообщения по этим кастомным полям среди всех.
Ещё, как вариант, можно хранить id вк-шных сообщений как отдельное поле в json у m.message - я уточнил в комнате https://matrix.to/#/!jxlRxnrZCsjpjDubDX:matrix.org/$JORIf-2lCprGR5_099_Vld5XuSv8SVvrpKBiA0layrk?via=matrix.org&via=mozilla.org&via=privacytools.io - сказали что это норм вариант. Непонятно только как потом выискивать сообщения по этим кастомным полям среди всех.
а я и не знал и добавлял id=XXX в тело сообщения, когда нужно было связывать сообщение со сторонней системой... Это сработает, когда нужно будет редактирование сообщения ИЗ матрицы отправлять в VK. :-) Иначе matrix_message_id пришлось бы хранить в ВК-шном сообщении :-)
Получается остаётся по факту (чтобы покрыть оба варианта) - только переезжать с bot_state.json
на полноценное хранение в базе данных.
Если отредактировать в ВК отправленное сообщение, то бот его присылает как новое сообщение "Ваша реплика". Было бы здорово, если б он научился делать Edit соответствующего старого сообщения.