You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: msg.sendMultiMessage_handler.go
    path of file: ./repos/teamgram-server/app/messenger/msg/msg/internal/core
    
    the code of the file until where you have to start completion: /*
 * Created from 'scheme.tl' by 'mtprotoc'
 *
 * Copyright (c) 2021-present,  Teamgram Studio (https://teamgram.io).
 *  All rights reserved.
 *
 * Author: teamgramio (teamgram.io@gmail.com)
 */

package core

import (
	"github.com/teamgram/proto/mtproto"
	"github.com/teamgram/teamgram-server/app/messenger/msg/inbox/inbox"
	"github.com/teamgram/teamgram-server/app/messenger/msg/msg/msg"
	"github.com/teamgram/teamgram-server/app/messenger/sync/sync"
	chatpb "github.com/teamgram/teamgram-server/app/service/biz/chat/chat"
	userpb "github.com/teamgram/teamgram-server/app/service/biz/user/user"
)

// MsgSendMultiMessage
// msg.sendMultiMessage user_id:long auth_key_id:long peer_type:int peer_id:long message:Vector<OutboxMessage> = Updates;
func (c *MsgCore) MsgSendMultiMessage(in *msg.TLMsgSendMultiMessage) (*mtproto.Updates, error) {
	var (
		err      error
		rUpdates *mtproto.Updates
		peer     = mtproto.MakePeerUtil(in.Peer
    
func (c *MsgCore) MsgSendMultiMessage(in *msg.TLMsgSendMultiMessage) (*mtproto.Updates, error) {
	var (
		err      error
		rUpdates *mtproto.Updates
		peer     = mtproto.MakePeerUtil(in.PeerType, in.PeerId)
	)

	if peer.IsChannel() {
		// c.Logger.Errorf("msg.sendMultiMessage blocked, License key from https://teamgram.net required to unlock enterprise features.")
		return nil, mtproto.ErrEnterpriseIsBlocked
	}

	if len(in.Message) == 0 {
		err = mtproto.ErrGroupedMediaInvalid
		c.Logger.Errorf("msg.sendMultiMessage - error: %v", err)
		return nil, err
	}
	if in.Message[0].GetScheduleDate().GetValue() != 0 {
		// c.Logger.Errorf("msg.sendMultiMessage blocked, License key from https://teamgram.net required to unlock enterprise features.")
		return nil, mtproto.ErrEnterpriseIsBlocked
	}

	if !peer.IsChatOrUser() {
		err = mtproto.ErrPeerIdInvalid
		c.Logger.Errorf("msg.sendMultiMessage - error: %v", err)
		return nil, err
	}

	if peer.IsUser() {
		// private
		rUpdates, err = c.sendUserOutgoingMultiMessage(in)
		if err != nil {
			c.Logger.Errorf("msg.sendMultiMessage - error: %v", err)
			return nil, err
		}
	} else {
		// chat
		rUpdates, err = c.sendChatOutgoingMultiMessage(in)
		if err != nil {
			c.Logger.Errorf("msg.sendMultiMessage - error: %v", err)
			return nil, err
		}
	}

	return rUpdates, nil
}