6 "github.com/layeh/gumble/gumble"
9 func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
10 b.Ui.SetActive(uiViewInput)
14 b.UpdateInputStatus(fmt.Sprintf("To: %s", e.Client.Self.Channel.Name))
15 b.AddOutputLine(fmt.Sprintf("Connected to %s", b.Client.Conn.RemoteAddr()))
16 if e.WelcomeMessage != "" {
17 b.AddOutputLine(fmt.Sprintf("Welcome message: %s", esc(e.WelcomeMessage)))
21 func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
24 case gumble.DisconnectError:
25 reason = "connection error"
26 case gumble.DisconnectOther:
28 case gumble.DisconnectVersion:
29 reason = "invalid version number"
30 case gumble.DisconnectUserName:
31 reason = "invalid user name"
32 case gumble.DisconnectUserCredentials:
33 reason = "incorrect user password/certificate"
34 case gumble.DisconnectServerPassword:
35 reason = "incorrect server password"
36 case gumble.DisconnectUsernameInUse:
37 reason = "user name in use"
38 case gumble.DisconnectServerFull:
39 reason = "server full"
40 case gumble.DisconnectNoCertificate:
41 reason = "missing certificate"
42 case gumble.DisconnectAuthenticatorFail:
43 reason = "authenticator verification failed"
46 b.AddOutputLine("Disconnected")
48 b.AddOutputLine("Disconnected: " + reason)
54 func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
55 b.AddOutputMessage(e.Sender, e.Message)
58 func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
59 if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self {
60 b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel.Name))
66 func (b *Barnard) OnChannelChange(e *gumble.ChannelChangeEvent) {
71 func (b *Barnard) OnPermissionDenied(e *gumble.PermissionDeniedEvent) {
74 case gumble.PermissionDeniedOther:
76 case gumble.PermissionDeniedPermission:
77 info = "insufficient permissions"
78 case gumble.PermissionDeniedSuperUser:
79 info = "cannot modify SuperUser"
80 case gumble.PermissionDeniedInvalidChannelName:
81 info = "invalid channel name"
82 case gumble.PermissionDeniedTextTooLong:
83 info = "text too long"
84 case gumble.PermissionDeniedTemporaryChannel:
85 info = "temporary channel"
86 case gumble.PermissionDeniedMissingCertificate:
87 info = "missing certificate"
88 case gumble.PermissionDeniedInvalidUserName:
89 info = "invalid user name"
90 case gumble.PermissionDeniedChannelFull:
92 case gumble.PermissionDeniedNestingLimit:
93 info = "nesting limit"
95 b.AddOutputLine(fmt.Sprintf("Permission denied: %s", info))
98 func (b *Barnard) OnUserList(e *gumble.UserListEvent) {
101 func (b *Barnard) OnACL(e *gumble.ACLEvent) {
104 func (b *Barnard) OnBanList(e *gumble.BanListEvent) {
107 func (b *Barnard) OnContextActionChange(e *gumble.ContextActionChangeEvent) {