当前位置: 首页>>代码示例>>Golang>>正文


Golang Conn.StateTracker方法代码示例

本文整理汇总了Golang中github.com/fluffle/goirc/client.Conn.StateTracker方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.StateTracker方法的具体用法?Golang Conn.StateTracker怎么用?Golang Conn.StateTracker使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/fluffle/goirc/client.Conn的用法示例。


在下文中一共展示了Conn.StateTracker方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: handle_command

func handle_command(conn *irc.Conn, line *irc.Line, args []string) {
	command := args[0][len(RC.CmdPrefix):]
	args = args[1:]

	st := conn.StateTracker()
	authed := RC.Authed[line.Nick]

	if line.Nick == RC.Owner && authed {
		// Owner-only commands
		if command == "mock" {
			for _, n := range args {
				_, is_on := st.IsOn(RC.Channel, n)
				if is_on {
					RC.Mocking[n] = true
					conn.Privmsg(RC.Channel, "Now mocking "+n)
				}
			}
		} else if command == "unmock" {
			for _, n := range args {
				if RC.Mocking[n] {
					RC.Mocking[n] = false
					conn.Privmsg(RC.Channel, "No longer mocking "+n)
				}
			}
		} else if command == "shorten" {
			fmt.Println("unimplemented")
		} else if command == "snoop" {
			fmt.Println("unimplemented")
		}
	} else if (RC.Ops[line.Nick] || line.Nick == RC.Owner) && authed {
		// Ops-level commands
		if command == "poop" {
			conn.Privmsg(RC.Channel, "poop")
		}
	} else if command == "identify" && !line.Public() {
		fmt.Println("User " + line.Nick + " attempting to auth...")
		h := sha256.New()
		h.Write([]byte(args[0]))
		pwd_hash := hex.EncodeToString(h.Sum(nil))
		if (line.Nick == RC.Owner || RC.Ops[line.Nick]) && RC.Password == pwd_hash {
			fmt.Println("Auth succeeded for " + line.Nick)
			RC.Authed[line.Nick] = true
			conn.Privmsg(line.Nick, "You're authenticated now.")
		} else {
			fmt.Println("WARNING: Auth failed for " + line.Nick + "!")
			conn.Privmsg(line.Nick, "You fucked up.")
		}
	}
}
开发者ID:cneill,项目名称:rusty-robot,代码行数:49,代码来源:handlers.go

示例2: collectorHandler

func (k *KarmaModule) collectorHandler(conn *irc.Conn, msg *Privmsg, match []string) {
	nickStr := strings.TrimSpace(match[1])
	if msg.Nick == nickStr {
		msg.RespondToNick(conn, "You can't karama yourself, you'll go blind!")
		return
	}

	nick := conn.StateTracker().GetNick(nickStr)
	if nick == nil {
		log.WithFields(logrus.Fields{
			"srcNick": msg.Nick,
			"dstNick": nickStr,
			"channel": msg.Channel,
		}).Debug("Karma: unknown nick")
		return
	}

	_, isOnChan := nick.IsOnStr(msg.Channel)
	if !isOnChan {
		log.WithFields(logrus.Fields{
			"srcNick": msg.Nick,
			"dstNick": nickStr,
			"channel": msg.Channel,
		}).Debug("Karma: nick not in the current channel")
		return
	}

	log.WithFields(logrus.Fields{
		"srcNick":   msg.Nick,
		"dstNick":   nickStr,
		"channel":   msg.Channel,
		"direction": match[2],
	}).Info("Karma: Updating nick")

	var karma Karma
	db.Where(Karma{Nick: nick.Nick}).FirstOrInit(&karma)
	if match[2] == "++" {
		karma.Count++
	} else {
		karma.Count--
	}
	db.Save(&karma)
}
开发者ID:nemith,项目名称:mipples,代码行数:43,代码来源:module_karma.go

示例3: setTopic

func setTopic(conn *irc.Conn, channel string) {
	defer func() {
		if r := recover(); r != nil {
			log.Printf("most likely coding error: %v", r)
		}
	}()

	topic := conn.StateTracker().GetChannel(channel).Topic
	newtopic := insertNextEvent(topic)
	newtopic = advanceDates(newtopic)

	if topic == newtopic {
		return
	}

	log.Printf("%s OLD TOPIC: %s", channel, topic)
	log.Printf("%s NEW TOPIC: %s", channel, newtopic)

	conn.Topic(channel, newtopic)
}
开发者ID:breunigs,项目名称:frank,代码行数:20,代码来源:topicchanger.go


注:本文中的github.com/fluffle/goirc/client.Conn.StateTracker方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。