summaryrefslogtreecommitdiffstats
path: root/modules/vote.rb
blob: 169ad207c27e125200f88cabefa847c11b2306a4 (plain)
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
def module_vote(msg_body, sender_nick, config)
	def vote(cmd,sender_nick)
		def vote_commit(current_vote)
			vote_db = File.open("vote.json", "w")
			vote_json = JSON.pretty_generate(current_vote)
			vote_db.write(vote_json)
			vote_db.close
		end
		vote_db_file = File.open("vote.json", "r")
		vote_db_text = ""
		vote_db_file.each { |line| vote_db_text = "#{vote_db_text}\n#{line}" }
		p vote_db_text
		@vote = JSON.parse(vote_db_text)
		vote_db_file.close
		case cmd
			when ""
				answer = "'!vote #n [titre]' pour ajouter un vote, '!vote #[numéro]' pour afficher un vote."
			when /^#\d+ (pour|contre|blanc)$/i
				number = cmd.gsub(/\s(pour|contre|blanc)$/i,"").gsub("#","").to_i
				vote_type = cmd.scan(/^#\d (.+?)$/)[0][0]
				if @vote[number]['voté'][sender_nick] == nil
					p cmd
					p vote_type
					@vote[number][vote_type] = @vote[number][vote_type] + 1
					@vote[number]['voté'][sender_nick] = vote_type
					answer = "#{sender_nick} a voté #{vote_type}."
				else
					old_vote = @vote[number]['voté'][sender_nick]
					p @vote[number]
					p old_vote
					p @vote[number]['voté'][sender_nick]
					@vote[number][old_vote] = @vote[number][old_vote] -1
					@vote[number]['voté'][sender_nick] = vote_type
					@vote[number][vote_type] = @vote[number][vote_type] +1
					answer = "#{sender_nick} a modifié son vote (#{old_vote}) en #{vote_type}."
				end
				vote_commit(@vote)

			when /^#\d+$/
				begin
					number = cmd.gsub("#","").to_i
					voted = ""
					@vote[number]['voté'].keys.each do |nick| voted = "#{voted} #{nick}" end
					voted = (voted != "" ? voted : "Personne")
					answer = "Vote ##{number} par #{@vote[number]['auteur']} : #{@vote[number]['titre']} → Pour : #{@vote[number]['pour'].to_s}, Contre : #{@vote[number]['contre'].to_s}, Blanc : #{@vote[number]['blanc'].to_s}, Déjà voté : #{voted}"
				rescue
					answer = "Vote inexistant !"
				end

			when /^#\d+ ràz$/i
				number = cmd.gsub(/\sràz$/i,"").gsub("#","").to_i
				if @vote[number] != nil
					if @vote[number]['auteur'] == sender_nick
						["pour","contre","blanc"].each do |s| @vote[number][s] = 0 end
						@vote[number]["voté"] = {}
						answer = "Vote ##{number} : #{@vote[number]['titre']} → Remis à zéro"
					else
						answer = "L'auteur (#{@vote[number]['auteur']}) du vote #{number} ne correspond pas à vous !"
					end
					vote_commit(@vote)
				else
						answer = "Vote inexistant !"
				end

            when /^#n (.+?)$/
				number = @vote.length
                titre = cmd.scan(/^#n (.+?)$/)[0][0]
				if @vote == nil 
					@vote = Array.new
				end
                @vote[number] = {
					'titre' => titre,
					'auteur' => sender_nick,
					'pour'  => 0,
					'contre'   => 0,
					'blanc' => 0,
					'voté' => {	}
					}
                answer = "Vote ##{number.to_s} ajouté par #{@vote[number]['auteur']}: #{@vote[number]['titre']}"
				vote_commit(@vote)
		end
		return answer
	end
	
	if msg_body =~ /^!vote(\s|\s(.+?)|$)/
		answer = vote(msg_body.gsub(/^!vote(\s|)/,""),sender_nick)
		return answer
	end
end