func githubWatcher(ctx *bot.Context) { // Watch #sp0rklf for IRC messages about issues coming from github. if ctx.Nick != "fluffle\\sp0rkle" || ctx.Target() != "#sp0rklf" || !strings.Contains(ctx.Text(), "issue #") { return } text := util.RemoveColours(ctx.Text()) // srsly github why colours :( l := &util.Lexer{Input: text} l.Find(' ') text = text[l.Pos()+1:] l.Find('#') l.Next() issue := int(l.Number()) labels, _, err := gh.Issues.ListLabelsByIssue( githubUser, githubRepo, issue, &github.ListOptions{}) if err != nil { logging.Error("Error getting labels for issue %d: %v", issue, err) return } for _, l := range labels { kv := strings.Split(*l.Name, ":") if len(kv) == 2 && kv[0] == "nick" { logging.Debug("Recording tell for %s about issue %d.", kv[1], issue) r := reminders.NewTell("that "+text, bot.Nick(kv[1]), "github", "") if err := rc.Insert(r); err != nil { logging.Error("Error inserting github tell: %v", err) } } } }
// Does some standard processing on s to make it key-like. func ToKey(s string, prefixes bool) string { // Lowercase and strip leading/trailing spaces and (some) punctuation s = strings.ToLower(strings.Trim(s, "!?., ")) // Remove IRC formatting and colours s = util.RemoveColours(util.RemoveFormatting(s)) if prefixes { // Remove commonly-written "prefixes" (see lib/util/prefix.rl) // We don't always want this, so guard it with a boolean. s = util.RemovePrefixes(s) } return s }