diff options
author | piernov <piernov@piernov.servegame.org> | 2011-06-02 15:08:03 +0200 |
---|---|---|
committer | piernov <piernov@piernov.servegame.org> | 2011-06-02 15:08:03 +0200 |
commit | 762f732c33432c9a6f488dd5618e19b26fe47609 (patch) | |
tree | 878104dccdc4389a1f523472f2f4e08a24e99777 /modules/vote.rb | |
parent | ec823fb412e4574e4d2dcd4c0f58dff01ee549e6 (diff) | |
download | rbjbbot-762f732c33432c9a6f488dd5618e19b26fe47609.tar.gz rbjbbot-762f732c33432c9a6f488dd5618e19b26fe47609.tar.bz2 rbjbbot-762f732c33432c9a6f488dd5618e19b26fe47609.tar.xz rbjbbot-762f732c33432c9a6f488dd5618e19b26fe47609.zip |
Diffstat (limited to 'modules/vote.rb')
-rw-r--r-- | modules/vote.rb | 89 |
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 |