Comments (3)
Currently my bot will crash if it tries to move to a channel it is not permitted to join
This does not seem correct. Is this because your code makes assumptions about being able to enter a channel, or is it a crash from within the gumble library?
Regardless, you can still check for permissions by:
-
Requesting the channel permissions if
Channel.Permission()
isnil
viaChannel.RequestPermission()
. AnOnChannelChange
event will trigger after requesting permissions. -
Once you have the permissions, check if it contains
PermissionEnter
:if Channel.Permission() & gumble.PermissionEnter != 0 { // can join channel }
from gumble.
I assume you meant to put a dereference on Channel.Permission()
else this won't compile
if *Channel.Permission() & gumble.PermissionEnter != 0 {
// can join channel
}
But Strangely I always get a null pointer returned even after calling RequestPermission()
log.Debug(event.Sender.Channel.Permission())
log.Debugf("Requesting Permission to enter %s", event.Sender.Channel.Name)
event.Sender.Channel.RequestPermission()
log.Debug(event.Sender.Channel.Permission())
returns
INFO[0103] User Cob16 (ID:1) called '!joinme'
DEBU[0103] <nil>
DEBU[0103] Requesting Permission to enter Private
DEBU[0103] <nil>
from gumble.
@cob16 Sorry, yes, you do have to dereference Channel.Permission()
.
The reason why that code does not work is because the server hasn't had time to respond to the request. You need to check Channel.Permission()
in OnChannelChange
:
log.Debug(event.Sender.Channel.Permission())
log.Debugf("Requesting Permission to enter %s", event.Sender.Channel.Name)
if event.Sender.Channel.Permission() == nil {
// TODO: queue up the action to perform
event.Sender.Channel.RequestPermission()
} else if *event.Sender.Channel.Permission() & gumble.PermissionEnter != 0 {
// TODO: do action
}
func (Listener) OnChannelChange(e *ChannelChangeEvent) {
invalid := !e.Has(gumble.ChannelChangePermission) ||
!channelThatWeAreWaitingFor(e.Channel) || // TODO
e.Channel.Permission() == nil
if invalid {
return
}
if e.Channel.Permission() & gumble.PermissionEnter != 0 {
// TODO: do queued action
} else {
// TODO: cannot enter channel
}
}
from gumble.
Related Issues (20)
- how to join a channel with gumble lib HOT 5
- Event which user speaks ? HOT 2
- Missing doc for openAL HOT 4
- PermissionDeniedMissingCertificate HOT 1
- Getting choppy sound. HOT 13
- [MacOS] s.deviceSource.CaptureSamples always return 0 HOT 1
- Force TCP mode in gumble? HOT 1
- Automatic rate limiting HOT 3
- Matterbridge integration? HOT 1
- Protocol features (v1.4) HOT 1
- Transmit Stereo Audio HOT 2
- Panic when a client disconnects hard ?
- question : are commands and voice packets sent on the same socket or on 2 different sockets ? HOT 1
- the opus can not work well when using gumble.
- Client loses ability to send message to channel HOT 2
- No audio transmitted and received and mumble-audio-player play no sound
- How to get gumbleffmpeg stream duration/length?
- Receiving audio HOT 1
- certificate signed by unknown authority HOT 1
- How to use .p12 user certificate from Mumble? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gumble.