6 "github.com/layeh/gumble/gumble"
9 func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
10 b.Ui.SetActive(uiViewInput)
14 if b.Client.AudioEncoder().Bitrate() > e.MaximumBitrate {
15 b.Client.AudioEncoder().SetBitrate(e.MaximumBitrate / 3)
18 b.UpdateInputStatus(fmt.Sprintf("To: %s", e.Client.Self().Channel().Name()))
19 b.AddOutputLine(fmt.Sprintf("Connected to %s", b.Client.Conn().RemoteAddr()))
20 if e.WelcomeMessage != "" {
21 b.AddOutputLine(fmt.Sprintf("Welcome message: %s", esc(e.WelcomeMessage)))
25 func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
28 case gumble.DisconnectError:
29 reason = "connection error"
30 case gumble.DisconnectOther:
32 case gumble.DisconnectVersion:
33 reason = "invalid version number"
34 case gumble.DisconnectUserName:
35 reason = "invalid user name"
36 case gumble.DisconnectUserCredentials:
37 reason = "incorrect user password/certificate"
38 case gumble.DisconnectServerPassword:
39 reason = "incorrect server password"
40 case gumble.DisconnectUsernameInUse:
41 reason = "user name in use"
42 case gumble.DisconnectServerFull:
43 reason = "server full"
44 case gumble.DisconnectNoCertificate:
45 reason = "missing certificate"
46 case gumble.DisconnectAuthenticatorFail:
47 reason = "authenticator via failed"
50 b.AddOutputLine("Disconnected")
52 b.AddOutputLine("Disconnected: " + reason)
58 func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
59 b.AddOutputMessage(e.Sender, e.Message)
62 func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
63 if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self() {
64 b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel().Name()))
70 func (b *Barnard) OnChannelChange(e *gumble.ChannelChangeEvent) {
75 func (b *Barnard) OnPermissionDenied(e *gumble.PermissionDeniedEvent) {
78 case gumble.PermissionDeniedOther:
80 case gumble.PermissionDeniedPermission:
81 info = "insufficient permissions"
82 case gumble.PermissionDeniedSuperUser:
83 info = "cannot modify SuperUser"
84 case gumble.PermissionDeniedInvalidChannelName:
85 info = "invalid channel name"
86 case gumble.PermissionDeniedTextTooLong:
87 info = "text too long"
88 case gumble.PermissionDeniedTemporaryChannel:
89 info = "temporary channel"
90 case gumble.PermissionDeniedMissingCertificate:
91 info = "missing certificate"
92 case gumble.PermissionDeniedInvalidUserName:
93 info = "invalid user name"
94 case gumble.PermissionDeniedChannelFull:
96 case gumble.PermissionDeniedNestingLimit:
97 info = "nesting limit"
99 b.AddOutputLine(fmt.Sprintf("Permission denied: %s", info))
102 func (b *Barnard) OnUserList(e *gumble.UserListEvent) {
105 func (b *Barnard) OnAcl(e *gumble.AclEvent) {
108 func (b *Barnard) OnBanList(e *gumble.BanListEvent) {
111 func (b *Barnard) OnContextActionChange(e *gumble.ContextActionChangeEvent) {