private async Task UserOptsOutOfChannel(NewMessage incoming, string channel) { if (_pendingConfirmations.ContainsKey(incoming.user)) { var _pending = _pendingConfirmations[incoming.user]; _pendingConfirmations.Remove(incoming.user); if (_funcNow() < _pending.OptionTime.AddMinutes(2)) { _activityLog.Log($"User {incoming.username} has opted out of pizza plans in channel {channel}."); await _state.AddUserToOptOutOfChannel(incoming.GetSendingUser(), channel); await _core.SendMessage(incoming.ConfirmOptOutMessage(channel)); } else { _pendingConfirmations.Add(incoming.user, new OptOutOption(incoming.GetSendingUser(), channel, _funcNow())); var message = incoming.RepeatOptOutMessageToConfirm(channel); await _core.SendMessage(message); } } else { _pendingConfirmations.Add(incoming.user, new OptOutOption(incoming.GetSendingUser(), channel, _funcNow())); var message = incoming.RepeatOptOutMessageToConfirm(channel); await _core.SendMessage(message); } }