本文整理匯總了Golang中github.com/fluffle/goirc/client.Conn.Who方法的典型用法代碼示例。如果您正苦於以下問題:Golang Conn.Who方法的具體用法?Golang Conn.Who怎麽用?Golang Conn.Who使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/fluffle/goirc/client.Conn
的用法示例。
在下文中一共展示了Conn.Who方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: reportAllNowPlaying
func reportAllNowPlaying(irc *client.Conn, asker, channel string) {
if !(strings.HasPrefix(channel, "#") || strings.HasPrefix(channel, "&")) {
log.Println("User", asker, "asked What's Playing...... via PM")
irc.Privmsg(channel, fmt.Sprintf("%s: this only works on channels", asker))
return
}
log.Println("User", asker, "requested What's Playing on channel", channel)
if !checkIdentified(irc, asker) {
r := fmt.Sprintf("%s: you must be identified with NickServ to use this command", asker)
log.Println(r)
irc.Privmsg(channel, r)
return
}
if _, ok := whoChannel[channel]; ok {
log.Println("Channel", channel, "is already executing a What's Playing request")
return
}
whoChannel[channel] = make(chan bool, 1)
go irc.Who(channel)
for _ = range whoChannel[channel] { // wait until channel is closed
}
delete(whoChannel, channel)
reportChan := make(chan bool)
totalReport := len(whoResult[channel]) - 1
msg := fmt.Sprintf("Reporting now playing for %d nicks in channel %s", totalReport, channel)
log.Println(msg)
irc.Notice(asker, msg)
for _, nick := range whoResult[channel] {
if nick != irc.Me().Nick {
n := nick
go func() {
rateLimit <- true
reportChan <- reportNowPlaying(irc, channel, asker, n, true)
<-rateLimit
}()
}
}
delete(whoResult, channel)
okCount, totalCount := 0, 0
for r := range reportChan {
if r {
okCount++
}
if totalCount++; totalCount == totalReport {
break
}
}
close(reportChan)
msg = fmt.Sprintf("Reported for %d of %d nicks", okCount, totalCount)
log.Println(msg)
irc.Notice(asker, msg)
return
}