Package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations

Types

CallbackQueryMapper
Link copied to clipboard
common
typealias CallbackQueryMapper<T> = suspend T.() -> T?
ChatMemberUpdatedMapper
Link copied to clipboard
common
typealias ChatMemberUpdatedMapper<T> = suspend T.() -> T?
CommonMessageToContentMapper
Link copied to clipboard
common
typealias CommonMessageToContentMapper<T> = suspend CommonMessage<T>.() -> T?
EventMessageToEventMapper
Link copied to clipboard
common
typealias EventMessageToEventMapper<T> = suspend ChatEventMessage<T>.() -> T?
InlineQueryMapper
Link copied to clipboard
common
typealias InlineQueryMapper<T> = suspend T.() -> T?
MediaGroupFilter
Link copied to clipboard
common
typealias MediaGroupFilter<T> = suspend List<MediaGroupMessage<T>>.() -> Boolean
NullableRequestBuilder
Link copied to clipboard
common
typealias NullableRequestBuilder<T> = suspend (Update) -> Request<T>?
PassportMessageMapper
Link copied to clipboard
common
typealias PassportMessageMapper = suspend PassportMessage.() -> PassportData
RequestBuilder
Link copied to clipboard
common
typealias RequestBuilder<T> = suspend (Update) -> Request<T>

Functions

expectFlow
Link copied to clipboard
common
suspend fun <T> BehaviourContext.expectFlow(initRequest: Request<*>? = null, count: Int? = null, errorFactory: NullableRequestBuilder<*> = { null }, cancelRequestFactory: NullableRequestBuilder<*> = { null }, cancelTrigger: suspend (Update) -> Boolean = { cancelRequestFactory(it) != null }, filter: suspend (Update) -> List<T>): Flow<T>
suspend fun <T> FlowsUpdatesFilter.expectFlow(bot: TelegramBot, initRequest: Request<*>? = null, count: Int? = null, errorFactory: NullableRequestBuilder<*> = { null }, cancelRequestFactory: NullableRequestBuilder<*> = { null }, cancelTrigger: suspend (Update) -> Boolean = { cancelRequestFactory(it) != null }, filter: suspend (Update) -> List<T>): Flow<T>
expectOne
Link copied to clipboard
common
suspend fun <T> BehaviourContext.expectOne(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, cancelRequestFactory: NullableRequestBuilder<*> = { null }, cancelTrigger: suspend (Update) -> Boolean = { cancelRequestFactory(it) != null }, filter: suspend (Update) -> T?): T
suspend fun <T> FlowsUpdatesFilter.expectOne(bot: TelegramBot, initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, cancelRequestFactory: NullableRequestBuilder<*> = { null }, cancelTrigger: suspend (Update) -> Boolean = { cancelRequestFactory(it) != null }, filter: suspend (Update) -> T?): T
waitAnimation
Link copied to clipboard
common
suspend fun BehaviourContext.waitAnimation(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<AnimationContent>? = null): List<AnimationContent>
waitAnyInlineQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitAnyInlineQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: InlineQueryMapper<InlineQuery>? = null): List<InlineQuery>
waitAnyMediaGroupContent
Link copied to clipboard
common
suspend fun BehaviourContext.waitAnyMediaGroupContent(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = true, filter: CommonMessageToContentMapper<MediaGroupContent>? = null): List<MediaGroupContent>
waitAnyPassportMessages
Link copied to clipboard
common
suspend fun BehaviourContext.waitAnyPassportMessages(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: PassportMessageMapper? = null): List<PassportData>
waitAudio
Link copied to clipboard
common
suspend fun BehaviourContext.waitAudio(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = false, filter: CommonMessageToContentMapper<AudioContent>? = null): List<AudioContent>
waitAudioMediaGroupContent
Link copied to clipboard
common
suspend fun BehaviourContext.waitAudioMediaGroupContent(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = true, filter: CommonMessageToContentMapper<AudioMediaGroupContent>? = null): List<AudioMediaGroupContent>
waitBaseInlineQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitBaseInlineQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: InlineQueryMapper<BaseInlineQuery>? = null): List<BaseInlineQuery>
waitChannelChatCreatedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitChannelChatCreatedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<ChannelChatCreated>? = null): List<ChannelChatCreated>
waitChannelEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitChannelEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<ChannelEvent>? = null): List<ChannelEvent>
waitChatEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitChatEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<ChatEvent>? = null): List<ChatEvent>
waitChatMemberUpdated
Link copied to clipboard
common
suspend fun BehaviourContext.waitChatMemberUpdated(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null): List<ChatMemberUpdated>
waitCommonChatMemberUpdated
Link copied to clipboard
common
suspend fun BehaviourContext.waitCommonChatMemberUpdated(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null): List<ChatMemberUpdated>
waitCommonEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitCommonEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<CommonEvent>? = null): List<CommonEvent>
waitContact
Link copied to clipboard
common
suspend fun BehaviourContext.waitContact(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<ContactContent>? = null): List<ContactContent>
waitContentMessage
Link copied to clipboard
common
suspend fun BehaviourContext.waitContentMessage(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<MessageContent>? = null): List<MessageContent>
waitDataCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitDataCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<DataCallbackQuery>? = null): List<DataCallbackQuery>
waitDeleteChatPhotoEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitDeleteChatPhotoEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<DeleteChatPhoto>? = null): List<DeleteChatPhoto>
waitDice
Link copied to clipboard
common
suspend fun BehaviourContext.waitDice(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<DiceContent>? = null): List<DiceContent>
waitDocument
Link copied to clipboard
common
suspend fun BehaviourContext.waitDocument(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = false, filter: CommonMessageToContentMapper<DocumentContent>? = null): List<DocumentContent>
waitDocumentMediaGroupContent
Link copied to clipboard
common
suspend fun BehaviourContext.waitDocumentMediaGroupContent(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = true, filter: CommonMessageToContentMapper<DocumentMediaGroupContent>? = null): List<DocumentMediaGroupContent>
waitDocumentsGroup
Link copied to clipboard
common
suspend fun BehaviourContext.waitDocumentsGroup(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: MediaGroupFilter<DocumentMediaGroupContent>? = null): List<List<DocumentMediaGroupContent>>
waitGame
Link copied to clipboard
common
suspend fun BehaviourContext.waitGame(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<GameContent>? = null): List<GameContent>
waitGameShortNameCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitGameShortNameCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<GameShortNameCallbackQuery>? = null): List<GameShortNameCallbackQuery>
waitGroupChatCreatedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitGroupChatCreatedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<GroupChatCreated>? = null): List<GroupChatCreated>
waitGroupEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitGroupEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<GroupEvent>? = null): List<GroupEvent>
waitInlineMessageIdCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitInlineMessageIdCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<InlineMessageIdCallbackQuery>? = null): List<InlineMessageIdCallbackQuery>
waitInlineMessageIdDataCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitInlineMessageIdDataCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<InlineMessageIdDataCallbackQuery>? = null): List<InlineMessageIdDataCallbackQuery>
common
suspend fun BehaviourContext.waitInlineMessageIdGameShortNameCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<InlineMessageIdGameShortNameCallbackQuery>? = null): List<InlineMessageIdGameShortNameCallbackQuery>
waitInvoice
Link copied to clipboard
common
suspend fun BehaviourContext.waitInvoice(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<InvoiceContent>? = null): List<InvoiceContent>
waitLeftChatMemberEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitLeftChatMemberEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<LeftChatMember>? = null): List<LeftChatMember>
waitLocation
Link copied to clipboard
common
suspend fun BehaviourContext.waitLocation(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<LocationContent>? = null): List<LocationContent>
waitLocationInlineQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitLocationInlineQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: InlineQueryMapper<LocationInlineQuery>? = null): List<LocationInlineQuery>
waitMedia
Link copied to clipboard
common
suspend fun BehaviourContext.waitMedia(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = false, filter: CommonMessageToContentMapper<MediaContent>? = null): List<MediaContent>
waitMediaGroup
Link copied to clipboard
common
suspend fun BehaviourContext.waitMediaGroup(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: MediaGroupFilter<MediaGroupContent>? = null): List<List<MediaGroupContent>>
waitMessageAutoDeleteTimerChangedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitMessageAutoDeleteTimerChangedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<MessageAutoDeleteTimerChanged>? = null): List<MessageAutoDeleteTimerChanged>
waitMessageCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitMessageCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<MessageCallbackQuery>? = null): List<MessageCallbackQuery>
waitMessageDataCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitMessageDataCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<MessageDataCallbackQuery>? = null): List<MessageDataCallbackQuery>
waitMessageGameShortNameCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitMessageGameShortNameCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<MessageGameShortNameCallbackQuery>? = null): List<MessageGameShortNameCallbackQuery>
waitMyChatMemberUpdated
Link copied to clipboard
common
suspend fun BehaviourContext.waitMyChatMemberUpdated(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: ChatMemberUpdatedMapper<ChatMemberUpdated>? = null): List<ChatMemberUpdated>
waitNewChatMembersEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitNewChatMembersEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<NewChatMembers>? = null): List<NewChatMembers>
waitNewChatPhotoEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitNewChatPhotoEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<NewChatPhoto>? = null): List<NewChatPhoto>
waitNewChatTitleEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitNewChatTitleEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<NewChatTitle>? = null): List<NewChatTitle>
waitPassportMessages
Link copied to clipboard
common
suspend fun <O> BehaviourContext.waitPassportMessages(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, mapper: suspend PassportMessage.() -> O?): List<O>
waitPassportMessagesWith
Link copied to clipboard
common
inline suspend fun <T : EncryptedPassportElement> BehaviourContext.waitPassportMessagesWith(count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, noinline filter: PassportMessageMapper? = null): List<PassportData>
waitPhoto
Link copied to clipboard
common
suspend fun BehaviourContext.waitPhoto(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = false, filter: CommonMessageToContentMapper<PhotoContent>? = null): List<PhotoContent>
waitPhotoGallery
Link copied to clipboard
common
suspend fun BehaviourContext.waitPhotoGallery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: MediaGroupFilter<PhotoContent>? = null): List<List<PhotoContent>>
waitPinnedMessageEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitPinnedMessageEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<PinnedMessage>? = null): List<PinnedMessage>
waitPlaylist
Link copied to clipboard
common
suspend fun BehaviourContext.waitPlaylist(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: MediaGroupFilter<AudioMediaGroupContent>? = null): List<List<AudioMediaGroupContent>>
waitPoll
Link copied to clipboard
common
suspend fun BehaviourContext.waitPoll(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<PollContent>? = null): List<PollContent>
waitProximityAlertTriggeredEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitProximityAlertTriggeredEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<ProximityAlertTriggered>? = null): List<ProximityAlertTriggered>
waitSticker
Link copied to clipboard
common
suspend fun BehaviourContext.waitSticker(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<StickerContent>? = null): List<StickerContent>
waitSupergroupChatCreatedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitSupergroupChatCreatedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<SupergroupChatCreated>? = null): List<SupergroupChatCreated>
waitSupergroupEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitSupergroupEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<SupergroupEvent>? = null): List<SupergroupEvent>
waitText
Link copied to clipboard
common
suspend fun BehaviourContext.waitText(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<TextContent>? = null): List<TextContent>
waitUnknownCallbackQuery
Link copied to clipboard
common
suspend fun BehaviourContext.waitUnknownCallbackQuery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CallbackQueryMapper<UnknownCallbackQueryType>? = null): List<UnknownCallbackQueryType>
waitVenue
Link copied to clipboard
common
suspend fun BehaviourContext.waitVenue(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<VenueContent>? = null): List<VenueContent>
waitVideo
Link copied to clipboard
common
suspend fun BehaviourContext.waitVideo(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = false, filter: CommonMessageToContentMapper<VideoContent>? = null): List<VideoContent>
waitVideoGallery
Link copied to clipboard
common
suspend fun BehaviourContext.waitVideoGallery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: MediaGroupFilter<VideoContent>? = null): List<List<VideoContent>>
waitVideoNote
Link copied to clipboard
common
suspend fun BehaviourContext.waitVideoNote(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<VideoNoteContent>? = null): List<VideoNoteContent>
waitVisualGallery
Link copied to clipboard
common
suspend fun BehaviourContext.waitVisualGallery(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: MediaGroupFilter<VisualMediaGroupContent>? = null): List<List<VisualMediaGroupContent>>
waitVisualMediaGroupContent
Link copied to clipboard
common
suspend fun BehaviourContext.waitVisualMediaGroupContent(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, includeMediaGroups: Boolean = true, filter: CommonMessageToContentMapper<VisualMediaGroupContent>? = null): List<VisualMediaGroupContent>
waitVoice
Link copied to clipboard
common
suspend fun BehaviourContext.waitVoice(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: CommonMessageToContentMapper<VoiceContent>? = null): List<VoiceContent>
waitVoiceChatEndedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitVoiceChatEndedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<VoiceChatEnded>? = null): List<VoiceChatEnded>
waitVoiceChatEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitVoiceChatEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<VoiceChatEvent>? = null): List<VoiceChatEvent>
waitVoiceChatParticipantsInvitedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitVoiceChatParticipantsInvitedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<VoiceChatParticipantsInvited>? = null): List<VoiceChatParticipantsInvited>
waitVoiceChatStartedEvents
Link copied to clipboard
common
suspend fun BehaviourContext.waitVoiceChatStartedEvents(initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: EventMessageToEventMapper<VoiceChatStarted>? = null): List<VoiceChatStarted>