Compare commits
	
		
			34 Commits
		
	
	
		
			56f54bed6a
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8eaed5595c | |||
| 973c4980f8 | |||
| 87d7cc5933 | |||
| ac30629979 | |||
| 3c3815defb | |||
| 06d44e564f | |||
| caaf419d6d | |||
| d548e00fb3 | |||
| 0832d25a26 | |||
| 89dcaf46ea | |||
| 9ec7f92a4c | |||
| b3e84736dc | |||
| 54bc64e337 | |||
| 6772fa2711 | |||
| b7c10342bb | |||
| ded4ddb09a | |||
| 4492dae059 | |||
| 8245932e33 | |||
| ebac399c68 | |||
| 2490688bb0 | |||
| b243e8d4f0 | |||
| ef57832480 | |||
| c87a54932a | |||
| 702f0ca119 | |||
| 29bca2cafc | |||
| f188c90284 | |||
| ccc19b384e | |||
| 5e98f7353b | |||
| 6e492fc296 | |||
| 0c94e60258 | |||
| cc0c60a82b | |||
| 66e6c3f688 | |||
| d61f9543fb | |||
| a9a313aa02 | 
							
								
								
									
										151
									
								
								coin.rb
									
									
									
									
									
								
							
							
						
						
									
										151
									
								
								coin.rb
									
									
									
									
									
								
							| @@ -3,11 +3,25 @@ require 'yaml' | ||||
| require 'discordrb' | ||||
|  | ||||
|  | ||||
| MAX_COINS_PER_DAY = 3 | ||||
| MAX_COINS_PER_DAY = 999 | ||||
| COIN_TIMEOUT = 15 | ||||
| SCOREBOARD = './scoreboard.yml' | ||||
| coin_state_active = false | ||||
| coins_offered_today = 0 | ||||
| PASTA='You know what? Im done, i am leaving, we were friendly talking about the subject. This crossed the line of "ok killer of joy" to "no fun allowed"' | ||||
| COIN_EMOJI = '🪙' | ||||
| BAG_EMOJI = '💰' | ||||
|  | ||||
| COIN_STATE_IDLE = 0 | ||||
| COIN_STATE_ACTIVE = 1 | ||||
| COIN_STATE_MATH = 2 | ||||
|  | ||||
| MATH_PROBLEM_COIN_GAIN = 3 | ||||
|  | ||||
| $coin_state_active = COIN_STATE_IDLE | ||||
| $coins_offered_today = 0 | ||||
|  | ||||
| $mathproblem_op1 = 0 | ||||
| $mathproblem_op2 = 0 | ||||
| $mathproblem_operator = "+" | ||||
|  | ||||
| bot = Discordrb::Bot.new token: ENV['DISCORD_TOKEN'] | ||||
|  | ||||
| @@ -56,8 +70,59 @@ def clean_name(input) | ||||
|   input.tr '@', '' | ||||
| end | ||||
|  | ||||
| def get_coin(event, amt = 1) | ||||
|   # update score | ||||
|   author = event.methods.include?(:author) ? event.author : event.user | ||||
|  | ||||
|   if $coin_state_active != 0 | ||||
|     if author.bot_account? | ||||
|       event.respond "Bots don't get coins!" | ||||
|     end | ||||
|     $coin_state_active = COIN_STATE_IDLE | ||||
|     if(rand(100) == 47) | ||||
|       hyper_coin_amount = rand(100) | ||||
|       coins = increment_coin(event.author.id, hyper_coin_amount) | ||||
|       event.respond "What astounding luck!!! #{clean_name author.display_name}, you've just activated HYPER COIN EVENT and have received #{hyper_coin_amount} coins for a grand total of #{coins} coins!" | ||||
|     else | ||||
|       coins = increment_coin(author.id, amt) | ||||
|       event.respond "Nice catch, #{clean_name author.display_name}! You have #{plural('coin', coins)} now!" | ||||
|     end | ||||
|   else | ||||
|     event.respond "No coins for you, #{clean_name author.display_name}!" | ||||
|   end | ||||
| end | ||||
|  | ||||
| def give_coin(event) | ||||
|   reactor_coins = get_coin_count(event.user.id) | ||||
|   if reactor_coins <= 0 | ||||
|     event.respond("Nice gesture, <@#{event.user.id}>, but you're broke! To get more coins, type the words `GET COIN` whenever I post the coin event message! But be quick, your friends are trying their best to get it before you do!") | ||||
|     return | ||||
|   end | ||||
|  | ||||
|   if event.message.author == event.user | ||||
|     event.respond("<@#{event.user.id}>, you can't give coins to yourself!") | ||||
|     return | ||||
|   end | ||||
|  | ||||
|  | ||||
|   coin_amount = 0 | ||||
|   if event.emoji.name == COIN_EMOJI | ||||
|     coin_amount = 1 | ||||
|   elsif event.emoji.name == BAG_EMOJI | ||||
|     coin_amount = 5 | ||||
|   end | ||||
|  | ||||
|   if reactor_coins  < coin_amount  | ||||
|     coin_amount = reactor_coins | ||||
|   end | ||||
|  | ||||
|   increment_coin(event.message.author.id, coin_amount) | ||||
|   increment_coin(event.user.id, -coin_amount) | ||||
|  | ||||
|   event.respond "How nice! <@#{event.message.author.id}> has received #{plural('coin', coin_amount)} from <@#{event.user.id}>!" | ||||
| end | ||||
|  | ||||
| bot.message(in: Integer(ENV['BOT_CHANNEL'])) do |event| | ||||
|   puts event.message | ||||
|   if event.message.attachments.count { |x| x.filename.scan(/coin*/).length > 0 } > 0 | ||||
|     event.respond "Oh no! Looks like you tried to post a fradulent coin! #{clean_name event.author.display_name}, your coin balance has now been emptied. Let that be a lesson for next time!" | ||||
|     empty_coin(event.author.id) | ||||
| @@ -65,24 +130,7 @@ bot.message(in: Integer(ENV['BOT_CHANNEL'])) do |event| | ||||
| end | ||||
|  | ||||
| bot.message(content: 'GET COIN' ) do |event| | ||||
|   next if event.author.role? 'robot friend' | ||||
|   # update score | ||||
|   if coin_state_active | ||||
|     if event.author.bot_account? | ||||
|       event.respond "Bots don't get coins!" | ||||
|     end | ||||
|     coin_state_active = false | ||||
|     if(rand(100) == 47) | ||||
|       hyper_coin_amount = rand(100) | ||||
|       coins = increment_coin(event.author.id, hyper_coin_amount) | ||||
|       event.respond "What astounding luck!!! #{clean_name event.author.display_name}, you've just activated HYPER COIN EVENT and have received #{hyper_coin_amount} coins for a grand total of #{coins} coins!" | ||||
|     else | ||||
|       coins = increment_coin(event.author.id) | ||||
|       event.respond "Nice catch, #{clean_name event.author.display_name}! You have #{plural('coin', coins)} now!" | ||||
|     end | ||||
|   else | ||||
|     event.respond "No coins for you, #{clean_name event.author.display_name}!" | ||||
|   end | ||||
|   get_coin(event) | ||||
| end | ||||
|  | ||||
| bot.message(with_text: '/coins') do |event| | ||||
| @@ -90,22 +138,71 @@ bot.message(with_text: '/coins') do |event| | ||||
|   event.respond "#{clean_name event.author.display_name}, you have #{plural('coin', coins)}!" | ||||
| end | ||||
|  | ||||
| bot.message(with_text: '!leave') do |event| | ||||
| event.respond PASTA | ||||
| end | ||||
|  | ||||
| bot.message(with_text: 'boobs', in: Integer(ENV['CUM_CHANNEL'])) do |event| | ||||
| next if not ENV['CUM_CHANNEL'] | ||||
| event.respond "# OHHHHHH IM GONNA CUM" | ||||
| end | ||||
|  | ||||
| bot.reaction_add do |event| | ||||
|   next unless [COIN_EMOJI, BAG_EMOJI].include? event.emoji.name | ||||
|  | ||||
|   if event.message.author.id == bot.bot_application.id | ||||
|     get_coin(event) | ||||
|   else | ||||
|     give_coin(event) | ||||
|   end | ||||
|  | ||||
| end | ||||
|  | ||||
| # math problem | ||||
| bot.message(in: Integer(ENV['BOT_CHANNEL'])) do |event| | ||||
|   next unless $coin_state_active == COIN_STATE_MATH | ||||
|  | ||||
|   result = eval("$mathproblem_op1 #{$mathproblem_operator} $mathproblem_op2") | ||||
|   user_result = Integer(event.message.content) rescue false | ||||
|  | ||||
|   if result == user_result | ||||
|     get_coin(event, MATH_PROBLEM_COIN_GAIN) | ||||
|   elsif user_result.is_a? Integer | ||||
|     event.respond "Nice try, but you're wrong!" | ||||
|   end | ||||
| end | ||||
|  | ||||
| bot.run(true) | ||||
|  | ||||
| loop do | ||||
|   # sleep random amount of time between 1 and 4 hours | ||||
|   sleep(get_random_hours(1, 4)) | ||||
|   if rand(6) == 1 | ||||
|     # math problem | ||||
|  | ||||
|     # activate coin state | ||||
|   coin_state_active = true | ||||
|     $coin_state_active = COIN_STATE_MATH | ||||
|  | ||||
|     $mathproblem_op1 = rand(10..150) | ||||
|     $mathproblem_op2 = rand(10..150) | ||||
|     $mathproblem_operator = rand(2) == 1 ? "+" : "-" | ||||
|  | ||||
|     # send the math problem | ||||
|     bot.send_file(ENV['BOT_CHANNEL'], File.open('./block.gif', 'r')) | ||||
|     bot.send_message(ENV['BOT_CHANNEL'], "Solve the following for #{MATH_PROBLEM_COIN_GAIN} coins: `#{$mathproblem_op1} #{$mathproblem_operator} #{$mathproblem_op2}`") | ||||
|   else | ||||
|     # activate coin state | ||||
|     $coin_state_active = COIN_STATE_ACTIVE | ||||
|     # send coin GIF | ||||
|     bot.send_file(ENV['BOT_CHANNEL'], File.open('./coin.gif', 'r')) | ||||
|   coins_offered_today += 1 | ||||
|   end | ||||
|  | ||||
|   $coins_offered_today += 1 | ||||
|   # if max coins per day has reached, sleep until midnight | ||||
|   if coins_offered_today >= MAX_COINS_PER_DAY | ||||
|   if $coins_offered_today >= MAX_COINS_PER_DAY | ||||
|     sleep(get_seconds_to_midnight(Time.now)) | ||||
|     sleep(get_random_hours(0, 11)) | ||||
|     coins_offered_today = 0 | ||||
|     sleep(get_random_hours(5, 11)) | ||||
|     $coins_offered_today = 0 | ||||
|   end | ||||
| end | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user