Send messages and check for same player
This commit is contained in:
parent
902d96d877
commit
658c57f97b
20
Bot/Thief.fs
20
Bot/Thief.fs
@ -92,6 +92,10 @@ let checkThiefCooldown attacker =
|
|||||||
Error $"Whoa there you clepto, wait at least another {minutes} before you try stealing again."
|
Error $"Whoa there you clepto, wait at least another {minutes} before you try stealing again."
|
||||||
| None -> Ok attacker
|
| None -> Ok attacker
|
||||||
|
|
||||||
|
let checkPlayerIsAttackingThemselves defender attacker =
|
||||||
|
match attacker.DiscordId = defender.DiscordId with
|
||||||
|
| true -> Error "You think you're clever? You can't steal your own money, you dingleberry."
|
||||||
|
| false -> Ok attacker
|
||||||
|
|
||||||
let calculateWinPercentage amountRequested bank attackerStrength defenderStrength =
|
let calculateWinPercentage amountRequested bank attackerStrength defenderStrength =
|
||||||
let powerPercentage = float (attackerStrength - defenderStrength) * 0.005 + 0.1
|
let powerPercentage = float (attackerStrength - defenderStrength) * 0.005 + 0.1
|
||||||
@ -106,9 +110,9 @@ let calculateWinPercentage amountRequested bank attackerStrength defenderStrengt
|
|||||||
|
|
||||||
let steal target amount (ctx : IDiscordContext) =
|
let steal target amount (ctx : IDiscordContext) =
|
||||||
Game.executePlayerActionWithTarget target ctx (fun thief victim -> async { do!
|
Game.executePlayerActionWithTarget target ctx (fun thief victim -> async { do!
|
||||||
// thief
|
thief
|
||||||
|
|> checkPlayerIsAttackingThemselves victim
|
||||||
// |> checkVictimStealingCooldown victim
|
// |> checkVictimStealingCooldown victim
|
||||||
Ok thief
|
|
||||||
|> handleResultWithResponse ctx (fun _ -> async {
|
|> handleResultWithResponse ctx (fun _ -> async {
|
||||||
let cappedPrize , winPercentage , wasCapped =
|
let cappedPrize , winPercentage , wasCapped =
|
||||||
calculateWinPercentage amount (int victim.Bank) thief.Traits.Strength victim.Traits.Strength
|
calculateWinPercentage amount (int victim.Bank) thief.Traits.Strength victim.Traits.Strength
|
||||||
@ -176,6 +180,12 @@ let handleSteal (ctx : IDiscordContext) =
|
|||||||
}
|
}
|
||||||
do! DbService.updatePlayer GuildEnvironment.pgDb { thief with Bank = thief.Bank + prize } |> Async.Ignore
|
do! DbService.updatePlayer GuildEnvironment.pgDb { thief with Bank = thief.Bank + prize } |> Async.Ignore
|
||||||
do! DbService.addPlayerEvent GuildEnvironment.pgDb victim.DiscordId stole |> Async.Ignore
|
do! DbService.addPlayerEvent GuildEnvironment.pgDb victim.DiscordId stole |> Async.Ignore
|
||||||
|
let builder = DiscordMessageBuilder()
|
||||||
|
builder.WithContent($"{thief.Name} stole {prize} from <@{victim.DiscordId}>!") |> ignore
|
||||||
|
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle)
|
||||||
|
do! channel.SendMessageAsync(builder)
|
||||||
|
|> Async.AwaitTask
|
||||||
|
|> Async.Ignore
|
||||||
| false ->
|
| false ->
|
||||||
let embed = getResultEmbed' WentToPrison
|
let embed = getResultEmbed' WentToPrison
|
||||||
let imprisoned = {
|
let imprisoned = {
|
||||||
@ -188,6 +198,12 @@ let handleSteal (ctx : IDiscordContext) =
|
|||||||
do! Async.Sleep 2000
|
do! Async.Sleep 2000
|
||||||
let role = ctx.GetGuild().GetRole(GuildEnvironment.rolePrisoner)
|
let role = ctx.GetGuild().GetRole(GuildEnvironment.rolePrisoner)
|
||||||
do! ctx.GetDiscordMember().GrantRoleAsync(role) |> Async.AwaitTask
|
do! ctx.GetDiscordMember().GrantRoleAsync(role) |> Async.AwaitTask
|
||||||
|
let builder = DiscordMessageBuilder()
|
||||||
|
builder.WithContent($"{thief.Name} went to prison for trying to steal from {victim.Name}!") |> ignore
|
||||||
|
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelEventsHackerBattle)
|
||||||
|
do! channel.SendMessageAsync(builder)
|
||||||
|
|> Async.AwaitTask
|
||||||
|
|> Async.Ignore
|
||||||
}
|
}
|
||||||
if answer = "yes" then
|
if answer = "yes" then
|
||||||
let targetId = uint64 tokens.[2]
|
let targetId = uint64 tokens.[2]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user