Интересные темы для разговора – Inspiratedd
Готовишься к встрече с друзьями? Или может у тебя намечается свидание? В любом случае, вы будете общаться. И если ты думаешь, о чем поговорить, то быстренько читай эту статью! Я подготовила для тебя интересные темы для разговора, которые не оставят собеседников равнодушными. Также несколько лайфхаков для удачной беседы, ждут тебя ниже.
Все мы знаем, что “от улыбки мир светлей”. Но очень часто забываем эту простую истину. Хочешь произвести впечатление? Будь искренним, позитивным и улыбчивым человеком. Слушай собеседника, интересуйся подробностями его рассказа. Если же улыбка никак “не натягивается”, а позитив куда-то пропал, то зачем тогда вообще вести разговор? Если ты заинтересован(а) в собеседнике и наоборот, то беседа пойдет “как по маслу”. А если тяжело выдавить из себя хоть слово и в воздухе царит нарочитое молчание, то здесь только один совет : “Беги Форрест, беги!”.
Ну а теперь темы для разговора…
- Хобби, увлечения. Любишь спорт, читать, рисовать? Расскажи об этом! И не забудь спросить собеседника.
- Книги, фильмы, музыка, сериалы. Банальная тема для разговора, но это тоже интересно! Поделись своими музыкальными предпочтениями, обменяйтесь книгами и советами, посоветуй фильм на вечер.
- Приключения и веселые истории. У каждого из нас есть парочка историй, которые могут насмешить толпу людей. Вспоминай и рассказывай.
- Странности. Любишь поплакать во время просмотра мультфильма? Или может балдеешь от запаха метро? Поведай о своих “маленьких тараканчиках в голове”. Это не только смешно, но и сближает.
- Судьба, взгляды на жизнь. Если разговор располагает, то можно поговорить и о личных взглядах на жизнь, на разные ситуации.
- Юмор. Поговорите о смешном. О любимых юмористах, шутках.
- То, что не нравится. Можно поделится и своим негативным отношением к чему-то. Только с этой темой, аккуратно, пожалуйста. Постарайся не обидеть чувства собеседника.
- Будущее. Расскажи о своих мечтах, целях.
- Переживания, мысли. Поделись своими проблемами (здесь тоже важно палку не перегибать), может получишь дельный совет?
- Домашние животные, родственники, общие знакомые. Эта тема также полна веселых (и не очень) историй. Но лучше говорить о веселых.
- Работа, учеба. Довольно важная тема, но главное не заскучать.
- Отдых, путешествия. Поделись впечатлениями от отпуска или каникул.
Искренне надеюсь, что тебя ожидает увлекательное общение и позитивные эмоции. Удачи!
Читай также (клик) 👇
Как стать интересным собеседником и понравиться в общении ✨
Как выглядеть уверенным в себе человеком ✨
Подобається це:
Подобається Завантаження…
Posted by:
Inspiratedd
« Previous Post
Next Post »
Про мене
Привіт! Мене звати Влада і я автор блогу Inspiratedd. Рада вітати тебе в мене на сайті!
Нові дописи
підписатися
Введіть адресу електронної пошти…
Пошук на сайтіКак говорить с близкими, если у вас разные взгляды
В свете текущих событий может случиться так, что даже с родственниками и друзьями у вас могут оказаться разные политические позиции. В напряженной обстановке любая дискуссия может обернуться конфликтом или даже скандалом, что только усилит страх, тревогу и разобщенность. Мы собрали несколько советов о том, как выстраивать диалог.
Теги:
психология
психика
чувства
20th Century Fox
Определите цель разговора
Перед тем, как вступать в дискуссию с родственниками, друзьями и знакомыми, про которых вы знаете (или предполагаете), что они придерживаются иных политических взглядов, постарайтесь понять, для чего вам сейчас нужно это общение. Чаще всего мы нуждаемся в общении с близкими, потому что испытываем сильные эмоции — страх, панику, тревогу, стыд, вину, растерянность и не только (мы уже говорили, как помочь себе справиться с ними в моменте).
Если вам важно получить поддержку (или поддержать собеседника) именно в личных чувствах, не нужно переходить на обсуждение ситуации и взглядов на нее — оставайтесь в разговоре о личных переживаниях. Проговорите свои эмоции и назовите их. Психологи соглашаются, что устное обозначение своих негативных чувств снижает их накал. Важно помнить, что высокое эмоциональное напряжение может приводить к агрессии: если ваш собеседник настроен агрессивно или вы чувствуете, что сами можете сорваться, лучше отложить разговор, иначе случится ссора.
Если же вы хотите переубедить человека в его взглядах на ситуацию, будьте готовы к тому, что у вас может не получиться, ведь собеседник судит, исходя из той системы ценностных координат, которую он усвоил в детстве и которая укреплена его предыдущим жизненным опытом. Это не значит, что диалог невозможен, но стоит запастись терпением и терпимостью.
Проговорите общие ценности
У вас и ваших близких могут различаться взгляды на происходящее, но, если копнуть глубже, в их основе все равно нередко лежат общие ценности. Например, независимо от политических взглядов, все собеседники считают человеческую жизнь важной, а гибель людей — трагедией. Благополучие детей и лиц старшего возраста, доступ к образованию и медицинской помощи, возможность работать и получать достойную зарплату — вот примеры ценностей, которые скорее всего окажутся общими. Когда вы вместе с близкими проговорите их и согласитесь друг с другом, строить конструктивный диалог станет намного проще.
Впрочем, может оказаться, что ваши с родными ценности различаются слишком сильно. Это тоже нормально: единых «правильных» ценностей не существует, каждый вправе выбрать свои ориентиры — это тоже важно признать. Оставьте за собеседником право придерживаться его ценностей: да, скорее всего, ваши отношения потеряют ощутимую долю близости, но не разрушатся совсем.
Оставайтесь в конструктивном русле
Начните диалог с определения основных понятий и постарайтесь удалить из обсуждения эмоциональную составляющую (если она все еще есть, возвращайтесь к первому пункту). Тут особенно важны конкретные и подтвержденные факты, актуальные прямо сейчас, а исторические примеры, обобщения, сравнения и метафоры вряд ли способствуют конструктивности дискуссии. Проверяйте свои утверждения на этот предмет и старайтесь мягко возвращать собеседника к предметному обсуждению, резкие упреки в субъективности тоже испортят эмоциональный фон разговора.
Подготовьте аргументацию
Самое важное в вашем диалоге — аргументы. Спросите собеседника, откуда он получил сведения, на которых строит свои суждения. Это надежные источники, можно ли им доверять (напомним про нашу инструкцию по определению фейковых новостей)? Они независимые или аффилированные? Докажите надежность и независимость своих источников информации. Дальше вы можете опираться на них, подтверждая свою точку зрения. «Достучаться» до собеседника можно через ваши общие или его личные ценности: рассматривайте вместе аргументацию, ищите слабые места, обсуждайте их с точки зрения проверенных фактов.
Ищите ответы вместе
Не знать ответов на какие-либо вопросы, возникшие в ходе дискуссии, — нормально. Более того, это повод для того, чтобы вместе разобраться и докопаться до правды. Вы можете сразу же поискать ответы — помните про надежность источников информации! Такой подход пойдет на пользу и вашему диалогу, и отношениям в целом.
Как получить информацию о пользователе ВКонтакте
В этой статье мы расскажем, как получить информацию о пользователе с помощью VK API.
Основные данные, такие как имя пользователя, фамилия и идентификатор, можно получить с помощью переменной $rawRequest. А для получения дополнительной информации, такой как, например, дата рождения пользователя и номер телефона, мы будем использовать VK API. В этой статье мы приведем пример того, как можно использовать VK API. Документацию по использованию VK API можно найти здесь: https://vk.com/dev/first_guide
API (интерфейс прикладного программирования) является посредником между разработчиком приложения и любой средой, с которой это приложение должно взаимодействовать. API упрощает генерацию кода, предоставляя набор готовых классов, функций или структур для работы с существующими данными.
Если ваш бот публикуется не только в ВК, но и в другом канале, то вы можете использовать системную переменную $channelType для определения канала
Помните, что тестировать описанный в данной инструкции функционал нужно в ВК. Если вы используете функциональность, описанную ниже, и тестируете ее в Тестовый виджет Aimylogic , вы получите ошибку, так как бот пытается использовать API ВК и, естественно, не может этого сделать при тестировании вне ВК.
Прежде чем приступить к инструкции, создайте базовый скрипт, состоящий из пары текстовых экранов (приветствие + фразы для принятия пользовательского ввода), и опубликуйте его в ВК, как описано в этой статье.
Как узнать страну пользователя?
Обратите внимание, что вы увидите эти данные только в том случае, если они были указаны в профиле и на них не распространяются настройки приватности. Если пользователь не указал страну или данные доступны ограниченному кругу лиц, мы не сможем получить доступ к этой информации.
Добавьте в свой скрипт блок Transition на экран приветствия и подключите его к блоку условий, с помощью которого мы получим ID пользователя:
$id = $rawRequest. object.user_id
Из блока Условия сделать подключение с HTTP-запросом для получения страны пользователя из информации о странице ВКонтакте.
Вот как будет выглядеть этот HTTP-запрос:
- Метод —
ПОЛУЧИТЬ
- Вкладка ОТВЕТ HTTP-запроса должна содержать:
$country
имя переменной и$httpResponse.response[0].country.title
значение - Вкладки BODY и HEADERS заполнять не нужно.
- URL запроса выглядит так:
https://api.vk.com/method/users.get?user_ids=${id}&fields=country&access_token=ACCESS_TOKEN&v=5.101
- Скопируйте этот URL, заменив
ACCESS_TOKEN
ключом, который вы получили при добавлении бота в сообщество. Вы всегда можете снова получить этот токен в настройках сообщества: Настройки — Использование API — Токены доступа . Подробнее о добавлении канала ВКонтакте
- Скопируйте этот URL, заменив
- Метод —
Давайте разберемся со структурой этого URL
Мы используем метод users. get
. Об этом методе можно прочитать здесь.
Так как ранее мы получили идентификатор пользователя с помощью блока условий, наш запрос содержит следующее значение: user_ids=${id}
, вместо {id}
будет использоваться настоящий идентификатор пользователя ВКонтакте.
Мы используем параметр fields
метода users.get
В параметре fields
мы используем значение страны. Это также определено документацией VK API.
access_token
определяет токен нашего канала. Поэтому вместо ACCESS_TOKEN
нужно вставить полученный из ВК ключ.
И, наконец, 5.101
— актуальная версия протокола VK API. Вам нужно указать актуальную версию протокола VK API. Посмотреть, какая версия актуальна на данный момент, можно здесь (актуальна самая верхняя версия):
Вы можете получить такой URL-адрес:
Нам необходимо присвоить все полученные значения соответствующим переменным, что мы и делаем, добавляя переменную в HTTP запрос на вкладке ОТВЕТ и записывая полученную информацию в эту переменную.
Из опции Error
делаем ссылку на текстовый блок с текстом Error $httpStatus
Этот блок поможет нам понять в чем ошибка, если запрос не удался.
Если вы получили сообщение об ошибке, вернитесь назад и убедитесь, что вы правильно выполнили запрос.
Убедитесь, что мы получили эту информацию от пользователя
Теперь проверим, получили ли мы эту информацию — указана ли страна для этого пользователя, и не покрывается ли эта информация настройками приватности. Подключим опцию Success
HTTP-запроса к блоку Conditions , в котором пропишем $country
(та же самая переменная, которую мы указали в HTTP-запросе)
Если это условие выполнено, мы можем двигаться по сценарию (мы добавим HTTP-запрос ниже). А если нет (вариант или
), добавьте текстовый блок с вопросом о стране проживания.
Далее, после опции Success
, мы делаем ссылку на текстовый блок, содержащий следующее: Вы живете в $newcountry, верно?
Вы можете запросить другие данные, используя метод users. get
. Следуйте инструкциям по получению страны пользователя, за исключением следующих изменений.
Как узнать дату рождения?
URL для получения даты рождения: https://api.vk.com/method/users.get?user_ids=${id}&fields=bdate&access_token=ACCESSTOKEN&v=5.101
Здесь мы используем параметр bdate
метода users.get
- Имя переменной:
bd
- Значение:
$httpResponse.response[0].bdate
Как запросить номер телефона?
URL запроса: https://api.vk.com/method/users.get?user_ids=${id}&fields=contacts&access_token=ACCESSTOKEN&v=5.101
- Имя переменной
$сотовый телефон
- Значение
$httpResponse.response[0].mobile_phone
Вы можете получить номер телефона и город, если вы добавите в HTTP $city$country$cellphone$bd
Теперь мы можем отправить полученные данные с помощью обычного текстового блока:
Ваша страна $country. response [0].country.title Ваш день рождения $bd.response[0].bdate Ваш город $city.response[0].city.title Ваш телефон $cellphone.response[0].mobile_phone
В дальнейшем можно доработать скрипт, продумав логику перехода в зависимости от значений этих переменных.
Использование — VK SDK Kotlin
См. примеры проектов:
- Самый подробный пример, написанный на Котлине:
- https://github.com/vksdk/vk-sdk-kotlin/tree/master/examples/jvm-kotlin-example
- Минимальный пример без Kotlin в зависимостях:
- https://github.com/vksdk/vk-sdk-kotlin/tree/master/examples/jvm-only-java-example
- Пример минимального мультиплатформенного приложения (одна активность на Android и SwiftUI на iOS):
- https://github.com/vksdk/vk-sdk-kotlin/tree/master/examples/mpp-example
Артефакты
Список всех доступных артефактов:
реализация "com. petersamokhin.vksdk:http-client-jvm-okhttp:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-jvm:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-jvm:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-js:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-js:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-iosX64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-iosX64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-iosArm32:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-iosArm32:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-iosArm64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-iosArm64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-tvosX64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-tvosX64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-tvosArm64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-tvosArm64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-watchosX86:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-watchosX86:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-watchosArm32:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-watchosArm32:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-watchosArm64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-watchosArm64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:core-macosX64:$vkSdkVersion" реализация "com.petersamokhin.vksdk:http-client-common-ktor-macosX64:$vkSdkVersion"
Настройки
Настройки Вк
значение vkClientSettings = VkSettings( // Требуется HTTP-клиент httpКлиент = httpКлиент, // По умолчанию [VkApi.DEFAULT_VERSION], 5.122 для 0.0.7 // См.: https://vk.com/dev/versions апиверсия = 5.122, // Параметры по умолчанию пусты defaultParams = paramsOf («язык» на «ru»), // По умолчанию 3. Укажите [VkApi.EXECUTE_MAX_REQUESTS_PER_SECOND_DISABLED], чтобы отключить цикл выполнения очереди maxExecuteRequestsPerSecond = 3, // По умолчанию используется Dispatchers.Default из общего модуля kotlin coroutines // См. пример мультиплатформы и примечание iOS для ktor backgroundDispatcher = Диспетчеры.По умолчанию, json = Json { /* ваша конфигурация */ } )
Инициализация
Этот клиент используется во всех фрагментах в следующих разделах.
val клиент = VkApiClient( // Идентификатор пользователя или сообщества идентификатор = 151083290, // Токен доступа к API ВКонтакте. Должен иметь область действия «офлайн», чтобы не было истечения срока действия. // Подробнее: https://vk.com/dev/access_token токен = "abcdef123456...", // Работа с API сообщений доступна только для Сообществ тип = VkApiClient.Type.Community, // См. предыдущий фрагмент настройки = вкНастройки )
Кроме того, для серверных приложений полезно делать что-то от имени пользователя, но отправлять маркер доступа с клиента небезопасно. Здесь может помочь поток кода авторизации.
// Отсюда: https://vk.com/apps?act=manage // Выберите приложение и получите идентификатор и другую информацию из настроек приложения // Идентификатор приложения, ключ безопасности и т. д. val информация о приложении = информация о приложении ( идентификатор клиента = 123456789, clientSecret = "abcdef12345...", redirectUri = "https://oauth.vk.com/blank.html" ) val client = VkApiClient.fromCode( // Код от клиента код = "abcdef12345...", // Информация о приложении, см. выше приложение = информация о приложении, // См. предыдущие фрагменты; настройки для клиента // Клиент всегда является пользователем для потока кода настройки = вкНастройки )
запросов API
Вы можете повторно использовать запросы следующим образом:
// запрос информации val запрос = client.call("users.get", paramsOf("user_id" до 1))
Синхронный вызов
// Это всегда строка, вы должны разобрать ее самостоятельно val ответ: String = request. execute()
Асинхронный вызов
request.enqueue (объект: обратный вызов{ переопределить удовольствие onResult (результат: строка) { // Это всегда строка, вы должны разобрать ее сами } переопределить удовольствие при ошибке (ошибка: исключение) { println("Произошла ошибка:") ошибка.printStackTrace() } })
Пакетные запросы
Запросы из пакетной очереди выполняются как можно скорее на основе количества запросов в очереди.
Используя это, вы не можете превысить лимит запросов в секунду API ВКонтакте.
Обратный вызов использует JsonElement
, потому что ВК выполняет метод
, возвращающий массив ответов, он анализируется и в обратный вызов возвращается нужный элемент.
Может быть false
в случае ошибки.
Передайте обратный вызов:
client.call(запрос, пакет = true, объект: Callback{ переопределить удовольствие onResult (результат: строка) { // Это всегда JsonElement, вы должны разобрать его самостоятельно } переопределить удовольствие при ошибке (ошибка: исключение) { println("Произошла ошибка:") ошибка. printStackTrace() } })
Или используйте два обратных вызова
client.call (запрос, партия = истина, onResult = {результат: JsonElement -> // Это всегда JsonElement, вы должны разобрать его самостоятельно }, onError = { ошибка: исключение -> println("Произошла ошибка:") ошибка.printStackTrace() })
Также можно передавать параметры не только объекта запроса
client.call("users.get", paramsOf("user_id" до 1), batch = true, /* обратные вызовы */)
Делайте столько запросов, сколько хотите
для (i от 0 до 500) { client.call("users.get", paramsOf("user_id" до 1), batch = true, /* обратные вызовы */) // без задержки() ! }
Пройти их все за один раз:
val запросов: List= listOf(1, 2, 3, 4, 5) .map {userId -> client.call («users.get», paramsOf («user_id» в userId)) } .map { запрос -> BatchRequestItem (запрос, объект: Callback { /* */ }) } client. call(запросы)
Потоки для запросов
Весь функционал на базе Flows
доступен от делегата:
val потоки: VkApiClientFlows = client.flows()
В остальном то же самое:
клиент.потоки() .call(request, batch = true) // или укажите имя метода и параметры .onEach { результат: JsonElement -> /* сделать что-то */ } .catch { e -> /* сделать что-нибудь */ } .flowOn(Диспетчеры.IO) .launchIn(жизненный цикл)
Отправка сообщений
Используйте DSL:
client.sendMesage { одноранговый идентификатор = 12345678901 message = "Привет, мир!" вложение = "фото1234_5678,фото1234_1234" }.выполнять()
Или используйте конструктор:
значение сообщение = Сообщение() .peerId(12345678901) .text("Привет, мир!") // Затем отправить val запрос = client.send(сообщение) // или еще таким образом val запрос = message.sendFrom(клиент) // Не забывайте об этом! request. execute() // или используйте потоки, обратные вызовы и все, что хотите
Клавиатура
Используйте DSL:
client.sendMessage { одноранговый идентификатор = 12345678901 message = "Привет, мир!" клавиатура = клавиатура(oneTime = true) { // или `inlineKeyboard` для встроенного ряд { primaryButton("Синяя таблетка") { полезная нагрузка = "{}" // и т. д. } отрицательнаяКнопка("Красная таблетка") } } }.выполнять()
Приложения
Все функции, необходимые для загрузки, доступны от делегата:
значение загрузчика: VkApiUploader = client.uploader()
Просто прикрепите изображение:
значение peerId = 12345678901 val imageAttachmentString = client.uploader().uploadPhotoForMessage( одноранговый идентификатор, // или FileOnDisk(path = "/Users/you/Documents/img.png") // или массив байтов URL = "https://example.com/image.png" ) // imageAttachmentString что-то вроде 'photo987654321_1234' client. sendMessage { peerId = необходимыйPeerId вложение = imageAttachmentString }.выполнять()
Прикрепите все, что хотите, например, звуковое сообщение:
val необходимыйPeerId = 12345678901 val attachmentType = "аудио_сообщение" // В ВК процесс загрузки вложений скучный // и полностью покрывается этим методом, // но ответы динамические и не могут быть сериализованы за один раз для всех случаев // См.: https://vk.com/dev/upload_files val docAttachmentString = client.uploader().uploadContent( "docs.getMessagesUploadServer", // Первый шаг: метод получения `upload_url` "docs.save", // Последний шаг: сохранить вложение на сервере ВКонтакте (можете ли вы, ребята из ВК, сделать это под капотом?) params = paramsOf («тип» для типа приложения, «peer_id» для необходимого идентификатора узла), элементы = список( ЗагружаемыйКонтент.Файл( имя_поля = "файл", // Укажите эти параметры, но не беспокойтесь об их значениях; // но без них вы получите ответ об ошибке. fileName = "не имеет значения, но VK API не стабилен; имя_файла не должно быть пустым", mediaType = "тоже не имеет значения", file = FileOnDisk("/Users/petersamokhin/Desktop/test.mp3") ) ) ).let { ответ: строка -> // Запрос синхронный. Вы должны проанализировать ответ самостоятельно получитьПриложение (оно, тип прикрепления) } client.sendMessage { peerId = необходимыйPeerId // или docAttachmentString, в зависимости от вашей реализации метода retrieveAttachmentd вложение = "doc${docAttachmentString}" }.выполнять()
Типы предметов
:
Массив байт :
значение массива байтов: Массив байтов = извлечение байтовоткуда-то() val bytesItem: UploadableContent = UploadableContent.Bytes( имя_поля = "файл", имя_файла = "что-то.txt", mediaType = "текст/обычный", байты = массив байтов )
Файл из файловой системы (доступно только для JVM, darwin и JS):
val fileItem: UploadableContent = UploadableContent. File( имя_поля = "файл", имя_файла = "test.mp3", mediaType = "аудио/мпег", file = FileOnDisk("/Users/petersamokhin/Desktop/test.mp3") )
Что-то по URL :
значение urlItem: UploadableContent = UploadableContent.Url( имя_поля = "файл", имя_файла = "изображение.png", mediaType = "изображение/png", URL = "https://example.com/image.png" )
Реагировать на события
Используйте API длинных опросов ботов.
Начать прослушивание событий:
val настройки = VkBotsLongPollApi.Settings( ожидание = 25, // значение по умолчанию; рекомендовано ВК maxFails = 5 // Используйте VkBotsLongPollApi.Settings.IGNORE_FAILS, чтобы игнорировать все ошибки ) // Все параметры являются необязательными; не забывайте о примечании выше client.startLongPolling (перезапуск = ложь, настройки = настройки)
Прослушивание новых сообщений:
client.onMessage { событие: MessageNew -> если (event. message.isFromChat()) { client.sendMessage { peerId = событие.сообщение.peerId message = "Привет, чат" }.выполнять() } еще { client.sendMessage { peerId = событие.сообщение.peerId message = "Извините, я игнорирую личные разговоры." }.выполнять() } }
Слушайте все типы событий:
client.onEachEvent { событие: JsonElement -> // Вы должны разобрать событие }
И, конечно же, Flow
пример:
клиент.потоки().onMessage() .flatMapLatest { если (it.message.isFromChat()) { client.flows().sendMessage { peerId = it.message.peerId message = "Привет, чат" } // не нужно выполнять и т. д., потому что поток переключается } еще { client.flows().sendMessage { peerId = it.message.peerId message = "Извините, я игнорирую личные разговоры." } // не нужно выполнять и т.