-
Notifications
You must be signed in to change notification settings - Fork 5
/
tooly.rb
92 lines (79 loc) · 2.24 KB
/
tooly.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# encoding: UTF-8
require 'rubygems'
require 'mechanize'
require 'cinch'
require 'json'
require 'twitter'
require 'uri'
require 'cgi'
require_relative 'joinpart'
$LOAD_PATH << '.'
#require 'mpdcontroller.rb'
bot = Cinch::Bot.new do
configure do |c|
c.server = "irc.netsoc.tcd.ie"
c.nick = "tooly"
c.channels = ["#ducss","#wowfag","#tcd2014","#foodie","#sc2"]
c.plugins.plugins = [JoinPart]
end
Twitter.configure do |conf|
conf.consumer_key = "*MY_VALUE*"
conf.consumer_secret = "*MY_VALUE*"
end
Twitter.connection_options[:proxy] = "http://ducss.ie:3128"
twitter = Twitter::Client.new(
:oauth_token => "*MY_VALUE*" )
URI::DEFAULT_PARSER.regexp[:ABS_URI]
url_regex = URI.regexp(['http','https'])
mech = Mechanize.new
mech.set_proxy("www-proxy.cs.tcd.ie", 8080)
mech.max_history = 1
ignorelist = if File.exists?('ignorelist')
File.open('ignorelist') do |file|
Marshal.load(file)
end
else
[]
end
helpers do
def fetch_tweet(twitter, url)
screen_name = url.match(/!|\.com\/(.+?)\/stat/)[1]
id = url.match(/twitter.com\/.*\/(\d+)/)[1]
tweet = twitter.status(id)
"@#{screen_name}: " + CGI.unescapeHTML(tweet.text)
end
end
on :message, url_regex do |m,text|
text = URI.extract(m.message).map {|x| x if x.include? "http"}.compact.first
ignorelist.each{|item| return if text.include? item}
if text.include? "twitter.com" and text.include? "/status/"
m.reply fetch_tweet(twitter, text)
return
end
puts text
title = mech.get(text).title
title.gsub!(/[^[:graph:] ]/, '')
title.gsub!(/ {2}/,'')
GC.start
if title.length > 90
title = title[0..90] + '…'
end
m.reply "Title: " + title
end
on :message, /\$ignore (.*)/ do |m,text|
ignorelist << text
ignorelist.uniq!
File.open('ignorelist','w') do|file|
Marshal.dump(ignorelist, file)
end
m.reply "Now ignoring: #{ignorelist}"
end
on :message, /\$unignore (.*)/ do |m,text|
ignorelist.delete(text)
File.open('ignorelist','w') do|file|
Marshal.dump(ignorelist, file)
end
m.reply "Now ignoring: #{ignorelist}"
end
end
bot.start