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