Compare commits

..

No commits in common. "main" and "feat/GIVE-COIN" have entirely different histories.

2 changed files with 48 additions and 110 deletions

BIN
block.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

152
coin.rb
View File

@ -3,25 +3,20 @@ require 'yaml'
require 'discordrb' require 'discordrb'
MAX_COINS_PER_DAY = 999 MAX_COINS_PER_DAY = 4
COIN_TIMEOUT = 15 COIN_TIMEOUT = 15
SCOREBOARD = './scoreboard.yml' SCOREBOARD = './scoreboard.yml'
<<<<<<< HEAD
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"' 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"'
=======
DUMBASS = 521596582962003968
DUMBASS_BOT = 1034966228755820575
COIN_EMOJI = '🪙' COIN_EMOJI = '🪙'
BAG_EMOJI = '💰' >>>>>>> b24afe7 (give coin with react)
COIN_STATE_IDLE = 0 coin_state_active = false
COIN_STATE_ACTIVE = 1 coins_offered_today = 0
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'] bot = Discordrb::Bot.new token: ENV['DISCORD_TOKEN']
@ -70,58 +65,6 @@ def clean_name(input)
input.tr '@', '' input.tr '@', ''
end 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| bot.message(in: Integer(ENV['BOT_CHANNEL'])) do |event|
if event.message.attachments.count { |x| x.filename.scan(/coin*/).length > 0 } > 0 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!" 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!"
@ -130,7 +73,23 @@ bot.message(in: Integer(ENV['BOT_CHANNEL'])) do |event|
end end
bot.message(content: 'GET COIN' ) do |event| bot.message(content: 'GET COIN' ) do |event|
get_coin(event) # 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
end end
bot.message(with_text: '/coins') do |event| bot.message(with_text: '/coins') do |event|
@ -142,34 +101,28 @@ bot.message(with_text: '!leave') do |event|
event.respond PASTA event.respond PASTA
end end
bot.message(with_text: 'boobs', in: Integer(ENV['CUM_CHANNEL'])) do |event| bot.message(with_text: '!cum', in: Integer(ENV['CUM_CHANNEL'])) do |event|
next if not ENV['CUM_CHANNEL'] next if not ENV['CUM_CHANNEL']
event.respond "# OHHHHHH IM GONNA CUM" event.respond "OHHHHHH IM GONNA CUM"
end end
bot.reaction_add do |event| bot.reaction_add do |event|
next unless [COIN_EMOJI, BAG_EMOJI].include? event.emoji.name next unless event.emoji.name == COIN_EMOJI
reactor_coins = get_coin_count(event.user.id)
if event.message.author.id == bot.bot_application.id if reactor_coins == 0
get_coin(event) event.respond("<@#{event.user.id}>, you're a poor shmuck!")
else next
give_coin(event)
end end
end if event.message.author == event.user
event.respond("<@#{event.user.id}>, you can't give coins to yourself!")
# math problem next
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
increment_coin(event.message.author.id)
increment_coin(event.user.id, -1)
event.respond "<@#{event.message.author.id}>, you have been given a coin by <@#{event.user.id}>!"
end end
bot.run(true) bot.run(true)
@ -177,32 +130,17 @@ bot.run(true)
loop do loop do
# sleep random amount of time between 1 and 4 hours # sleep random amount of time between 1 and 4 hours
sleep(get_random_hours(1, 4)) sleep(get_random_hours(1, 4))
if rand(6) == 1
# math problem
# activate coin state # activate coin state
$coin_state_active = COIN_STATE_MATH coin_state_active = true
$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 # send coin GIF
bot.send_file(ENV['BOT_CHANNEL'], File.open('./coin.gif', 'r')) bot.send_file(ENV['BOT_CHANNEL'], File.open('./coin.gif', 'r'))
end coins_offered_today += 1
$coins_offered_today += 1
# if max coins per day has reached, sleep until midnight # 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_seconds_to_midnight(Time.now))
sleep(get_random_hours(5, 11)) sleep(get_random_hours(5, 11))
$coins_offered_today = 0 coins_offered_today = 0
end end
end end