Мы предполагаем, что даже если 2 события записи произойдут не по порядку, только записываемое свойство одновременно будет перезаписано, а свойство, которое устанавливается только один раз во всем потоке, не должно перезаписываться никогда.Разве это предположение не верно?
Нет
Вся база данных переписывается, поэтому любые свойства в ConversationData будут содержать значения того, что было сохранено в последний раз
this Семафор гарантирует, что сообщения на одном компьютере обрабатываются в том порядке, в котором сервер получает их, используя идентификатор разговора и пишет, что записи в разговоре или в пакетах личных разговоров не будут конфликтовать.Как только бот масштабируется вбок, эта гарантия больше не существует.
Для данных, специфичных для пользователя, используйте UserData
.Идентификатор разговора не гарантированно сохраняется в течение всего разговора (в большинстве случаев), независимо от того, как вы интерпретируете «весь разговор».Как определяется идентификатор разговора, отличается для каждого канала.В некоторых случаях вы можете даже увидеть новую беседу для каждого сообщения.Я предполагаю, что именно поэтому вы наблюдаете такое поведение, новый идентификатор разговора не будет содержать ConversationData
из другого разговора с тем же пользователем.
Тем не менее, идентификатор пользователя обычно гарантируется в большинствеканалы.Могут быть некоторые исключения из этого, но по большей части это будет верно.
Вы не указали информацию о каналах, которые вы используете, поэтому я стараюсь быть как можно более общим.