summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Rayhawk <jrayhawk@omgwallhack.org>2018-06-13 09:08:07 -0700
committerJoe Rayhawk <jrayhawk@omgwallhack.org>2018-06-13 09:08:07 -0700
commit1da7017cdcec48d1d199511ebb315c5460d7a9f6 (patch)
tree101452c9c0658ed314915ea64eacc66a17219e04
parentbd501f610291cdef3b8028247faa8c1e7f0b09df (diff)
downloadtwitchtools-1da7017cdcec48d1d199511ebb315c5460d7a9f6.tar.gz
twitchtools-1da7017cdcec48d1d199511ebb315c5460d7a9f6.zip
acronym.go: acronym generation bot command
-rw-r--r--go/acronym.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/go/acronym.go b/go/acronym.go
new file mode 100644
index 0000000..955f256
--- /dev/null
+++ b/go/acronym.go
@@ -0,0 +1,67 @@
+package main
+
+import(
+ "bufio"
+ "fmt"
+ "github.com/hpcloud/tail"
+ "math/rand"
+ "net"
+ "os"
+ "regexp"
+ "strings"
+ "time"
+)
+
+func check( e error ) {
+ if e != nil {
+ panic( e )
+ }
+}
+
+func main() {
+ rand.Seed( time.Now(). UnixNano() )
+ dictfile, err := os.Open( "/usr/share/dict/american-english-large" )
+ check( err )
+
+ defer dictfile.Close()
+ scanner := bufio.NewScanner( dictfile )
+ scanner.Split(bufio.ScanLines)
+ var clines []string
+ var blines []string
+ var klines []string
+ for scanner.Scan() {
+ if strings.HasPrefix( scanner.Text(), "c" ) {
+ clines = append(clines, scanner.Text())
+ }
+ if strings.HasPrefix( scanner.Text(), "b" ) {
+ blines = append(blines, scanner.Text())
+ }
+ if strings.HasPrefix( scanner.Text(), "k" ) {
+ klines = append(klines, scanner.Text())
+ }
+ }
+
+ r := regexp.MustCompile( "^[0-9]{2}:[0-9]{2} <(.bungmonkey|.cornbugs|.wishapb|@[a-zA-Z0-9_]+)> +!cbk" )
+ bungr := regexp.MustCompile( "^[0-9]{2}:[0-9]{2} <.bungmonkey> +!cbk" )
+ logfile, err := tail.TailFile( os.ExpandEnv( "${HOME}/irclogs/twitch/#cornbugs.log" ), tail.Config{ Follow: true, Location: &tail.SeekInfo{ 0, os.SEEK_END } } )
+ check( err )
+ for logline := range logfile.Lines {
+
+ if bungr.MatchString( logline.Text ) {
+ time.Sleep( time.Second )
+ }
+ if r.MatchString( logline.Text ) {
+ var cbk string
+ cbk = fmt.Sprintf( "%s %s %s\n", clines[ rand.Intn( len( clines ) ) ], blines[ rand.Intn( len( blines ) ) ], klines[ rand.Intn( len( klines ) ) ] )
+ fmt.Printf( "%v", cbk )
+ ircsocket, err := net.Dial( "unix", os.ExpandEnv( "${HOME}/.irssi/twitch-cornbugs-socket" ) )
+ check( err )
+ byteswritten, err := ircsocket.Write( []byte( cbk ) )
+ ircsocket.Close()
+ check( err )
+ fmt.Printf( "%v bytes written\n", byteswritten )
+ }
+ }
+
+}
+