summaryrefslogtreecommitdiffstats
path: root/modules/vote.rb
diff options
context:
space:
mode:
Diffstat (limited to 'modules/vote.rb')
-rw-r--r--modules/vote.rb89
1 files changed, 89 insertions, 0 deletions
diff --git a/modules/vote.rb b/modules/vote.rb
new file mode 100644
index 0000000..169ad20
--- /dev/null
+++ b/modules/vote.rb
@@ -0,0 +1,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 \ No newline at end of file