github.com/diamondburned/arikawa/v2@v2.1.0/state/store/defaultstore/me.go (about)

     1  package defaultstore
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/diamondburned/arikawa/v2/discord"
     7  	"github.com/diamondburned/arikawa/v2/state/store"
     8  )
     9  
    10  type Me struct {
    11  	mut  sync.RWMutex
    12  	self discord.User
    13  }
    14  
    15  var _ store.MeStore = (*Me)(nil)
    16  
    17  func NewMe() *Me {
    18  	return &Me{}
    19  }
    20  
    21  func (m *Me) Reset() error {
    22  	m.mut.Lock()
    23  	m.self = discord.User{}
    24  	m.mut.Unlock()
    25  
    26  	return nil
    27  }
    28  
    29  func (m *Me) Me() (*discord.User, error) {
    30  	m.mut.RLock()
    31  	self := m.self
    32  	m.mut.RUnlock()
    33  
    34  	if !self.ID.IsValid() {
    35  		return nil, store.ErrNotFound
    36  	}
    37  
    38  	return &self, nil
    39  }
    40  
    41  func (m *Me) MyselfSet(me discord.User) error {
    42  	m.mut.Lock()
    43  	m.self = me
    44  	m.mut.Unlock()
    45  
    46  	return nil
    47  }