Coder Social home page Coder Social logo

dankgrinder / dankgrinder Goto Github PK

View Code? Open in Web Editor NEW
72.0 13.0 129.0 211 KB

An advanced automation program for the Dank Memer Discord bot

License: GNU Affero General Public License v3.0

Makefile 0.12% Go 99.04% Shell 0.84%
discord dank-memer automation bot macro auto-farm

dankgrinder's Introduction

Official support and updates for Dank Grinder have been discontinued indefinitely. While the possibility of future continuation has not been eliminated, it is unlikely and should not be counted on. We would like to exhibit the following fork as a good, up-to-date alternative of the official version: https://github.com/V4NSH4J/dankgrinder

Dank Grinder

The most feature-rich, advanced Dank Memer automation tool.

Want to join the community or need support? Join our Discord. Have a question? Create a question issue. Want to suggest a feature? Create a suggestion issue. Encountered a bug? Report a bug. Want to contribute? Read our contribution guidelines.

logo

Features

  • Can run many instances at once
  • Uses very little system resources
  • High configurability; configure custom commands and much more
  • Automation of most currency commands and blackjack
  • Responds to fishing and hunting events (i.e. captures the dragon and special fish)
  • Responds to global events, search, and postmeme
  • Automatically uses tidepods and buys lifesavers when dying from them
  • Automatically buys a fishing pole, hunting rifle or laptop if they have broken

Getting started

Installation

  1. Download the latest release for your operating system here (darwin is for macOS), or build from source. If you build from source you can delete everything besides the compiled binaries and config.yml.
  2. Extract the archive
  3. Configure. Make sure token and channel_id fields of the instance are set, it will not run otherwise

Windows

  1. Double click dankgrinder.exe. If the program closes immediately after opening it, open a command prompt and drag the executable to it, then hit enter. You will now be able to see the error

Linux

  1. Run the binary:
    $ ./dankgrinder

macOS

  1. Run by double clicking the dankgrinder binary

Getting an authorization token

  1. Go to Discord, logged into the account you want to use
  2. Open the inspector by pressing ctrl + shift + i
  3. Click the "network" tab
  4. Refresh the page
  5. Look for any entry called "science" and click on it
  6. Expand the "request headers" and look for the value "authorization", that is your token

Enabling Discord's developer mode

To obtain a channel id for config.yml, you will need to have developer mode enabled.

  1. Go to your user settings on Discord
  2. Click "appearance" under "app settings"
  3. Scroll down to "advanced" and enable developer mode

You can now right click any user or channel to obtain the id.

Building from source

If you use an architecture other than amd64, or you want to build from source for another reason, doing so is quite simple.

Prerequisites

A working Go installation, see https://golang.org/doc/install.

Building

  1. Clone the repository:
    $ git clone https://github.com/dankgrinder/dankgrinder.git
  2. Build:
    $ make build

The executables should then be in the /build folder.

Configuration

All configuration can be done by editing config.yml with your editor of choice (e.g. Visual Studio Code, Sublime Text, Notepad++). The comments in the file itself provide extra explanation where necessary. For the bot to run, you must at least enter an authorization token and a channel id. If you are running into issues, you can join our Discord.

If you do not know how yaml works and are getting fatal errors, use this guide to learn the basics of yaml. Configuration errors are characterized by a near-instant fatal error when starting the program. If the program opens and then closes immediately on Windows, open a command prompt first, drag the executable onto it and hit enter. You should now be able to see the error.

A question mark after a field name means this field is optional.

Name Type Description
clusters dictionary[string]cluster object The clusters of instances run by the program. Each has at least a master, and optionally more instances
shifts array of shift objects One or more shifts which the instances use to schedule switching between the active and dormant state. Read more about shifts
features features object Several feature configurations which apply to all instances
compatibility compatibility object Several compatibility options which apply to all instances
suspicion_avoidance suspicion avoidance object Several techniques to avoid suspicion which apply to all instances

Cluster object

Name Type Description
master instance object The master instance of the cluster
instances array of instance objects The other instances in this cluster

Instance object

Name Type Description
token string The Discord authorization token of the instance
channel_id string The channel id this instance sends and receives messages in, you must have Discord developer mode enabled to obtain one
features? features object Override the default features object of the config only for this specific instance, any fields left out will not be overridden and vice-versa, see default values and when you can leave out fields
suspicion_avoidance? suspicion avoidance object Override the default suspicion avoidance object of the config only for this specific instance, any fields left out will not be overridden and vice-versa, see default values and when you can leave out fields
shifts? array of shift objects Override the default shifts array of the config only for this specific instance, see default values and when you can leave out fields

Shift object

Name Type Description
state string The state of the program for this shift, either active or dormant
duration.base integer The base duration of this shift in seconds. Read more about base and variation
duration.variation integer The random variation of this shift in seconds. Read more about base and variation

Features object

Name Type Description
commands commands object Enable or disable certain commands
custom_commands array of custom command object Configure your own, custom commands for the program to use
auto_buy auto-buy object Options for the automatic buying of certain items if it is detected that they are not available
auto_sell auto-sell object Options for the automatic, periodic selling of certain items
auto_gift auto-gift object Options for the automatic, periodic gifting of certain items to the master instance
auto_blackjack auto-blackjack object Options for automatically using the blackjack command
auto_share auto-share object Options for automatically sharing money with the master instance
auto_tidepod auto-tidepod object Options for automatically using tidepods
balance_check balance check object Options for checking balance
verbose_log_to_stdout boolean Whether or not to hook info events of instances to the standard logger
log_to_file boolean Whether or not to log errors and information to a file
debug boolean Enable logging debug level information. Currently has no effect

Commands object

Name Type Description
beg boolean Enable the pls beg command
postmeme boolean Enable the pls postmeme command
search boolean Enable the pls search command
highlow boolean Enable the pls highlow command
fish boolean Enable the pls fish command
hunt boolean Enable the pls hunt command

Custom command object

Name Type Description
value string The value of the command, for example: pls dep max
interval integer The interval at which this command will be re-sent in seconds. Time may vary depending on other commands and responses. If 0 the command will only run once in the beginning of every active shift
amount integer The amount of times this command will be run in total every active shift. Set to 0 for no limit
pause_below_balance integer A wallet balance value below which this command will not be sent. The balance is read from the balance check functionality. Consider having the interval of this quite low, to make sure the balance the program thinks you have is as up-to-date as possible

Auto-buy object

Name Type Description
fishing_pole boolean Enable the automatic purchase of a fishing pole when it is detected that one is not available
hunting_rifle boolean Enable the automatic purchase of a hunting rifle when it is detected that one is not available
laptop boolean Enable the automatic purchase of a laptop when it is detected that one is not available

Auto-sell object

Name Type Description
enable boolean Whether or not to enable automatic selling
interval integer The interval at which items will be sold during an active shift. If set to 0, items will only be sold once at the beginning of every active shift
items array of strings The Dank Memer item ids of the items to sell

Auto-gift object

Name Type Description
enable boolean Whether or not to enable automatic gifting to the master instance
interval integer The interval at which items will be gifted during an active shift. If set to 0, items will only be gifted once at the beginning of every active shift
items array of strings The Dank Memer item ids of the items to gift

Auto-blackjack object

Name Type Description
enable boolean Whether or not to enable automatic blackjack
priority boolean Whether or not to give the command priority over other, regular commands if there are commands queued
amount integer The amount to bet every time, set to 0 to bet the maximum amount of coins
pause_below_balance integer The balance below which the program should stop betting. The balance is read from the balance check functionality. Consider having the interval of this quite low, to make sure the balance the program thinks you have is as up-to-date as possible
logic_table dictionary[string]dictionary[string]string What to do for every possible blackjack hand. The string values are the exact response that will be triggered

Auto-share object

Name Type Description
enable boolean Whether or not to enable automatically giving money to the master
fund boolean Whether or not master instances should fund others that have auto-share enabled. This field is only read by master instances and ignored by others. It will fund them up to their minimum auto-share balance
maximum_balance integer The amount of money the instance may have before giving them to the master instance
minimum_balance integer The amount of money the instance should keep after giving money to the master instance and the amount the master will fund it to if an instance requests it

Auto-tidepod object

Name Type Description
enable boolean Whether or not to enable automatic usage of tidepods
interval integer The interval in seconds at which the program attempts to use tidepods. If set to 0, a tidepod will only be used once at the beginning of every active shift
buy_lifesaver_on_death bool Whether or not to buy a lifesaver after dying from tidepod usage

Balance check object

Name Type Description
enable boolean Whether or not to enable balance checks
interval integer The interval in seconds at which the program checks the balance. This is the same as the auto-share interval, if enabled

Compatibility object

Name Type Description
postmeme array of strings What options can be chosen for the postmeme command. The program will pick one randomly
allowed_searches array of strings The searches the application is allowed to pick. Items higher/earlier in the list have higher priority
search_cancel array of strings List of things the program will say to cancel a search when no allowed searches are provided. It will pick one randomly
cooldown cooldown object Cooldowns of commands (not custom commands)
await_response_timeout integer The time that the program will wait for a response when it is expecting one. Set to a higher value when Dank Memer is slow to respond and this causes issues. Values below 3 are not recommended

Cooldown object

Name Type Description
beg integer The cooldown of the beg command in seconds, set a few seconds higher to account for network delay
search integer The cooldown of the search command in seconds, set a few seconds higher to account for network delay
highlow integer The cooldown of the highlow command in seconds, set a few seconds higher to account for network delay
postmeme integer The cooldown of the postmeme command in seconds, set a few seconds higher to account for network delay
fish integer The cooldown of the fish command in seconds, set a few seconds higher to account for network delay
hunt integer The cooldown of the hunt command in seconds, set a few seconds higher to account for network delay
blackjack integer The cooldown of the blackjack command in seconds, set a few seconds higher to account for network delay
sell integer The cooldown of the sell command in seconds, set a few seconds higher to account for network delay
gift integer The cooldown of the gift command in seconds, set a few seconds higher to account for network delay
share integer The cooldown of the share command in seconds, set a few seconds higher to account for network delay

Suspicion avoidance object

Name Type Description
typing typing object Options for the use of typing when sending messages
message_delay message delay object Delay between receiving a message and starting to type and send a response

Typing object

Name Type Description
base integer The base duration of typing in milliseconds. Read more about base and variation
variation integer The random variation of typing in milliseconds. Read more about base and variation
speed integer The typing speed based on message length, in characters per minute

Message delay object

Name Type Description
base integer The base delay in milliseconds. Read more about base and variation
variation integer The random variation of the delay in milliseconds. Read more about base and variation

Base and variation

A base is a value that forms the base for a final result; it is the value that the program starts with.

A variation is a random value, from 0 up to but excluding n, added to a starting value.

Say a base value of 100, and a variation of 50 are used. The final result will be a number from 100 up to and including 149 because of the random value added by the variation.

Shifts

You can use shifts to make sure the bot is not suspicious because it is too active. We highly recommended using this option, and not running this program 24/7. An uptime of 50% per instance or less is advisable.

For example, if you would like to have the bot be active for 6 hours per day, then inactive for the remaining 18 you would do something like this (note that it will loop this, so after completing the last shift it will go back to the first):

shifts:
  - state: "active"
    duration:
      base: 21600
      variation: 0
  - state: "dormant"
    duration:
      base: 64800
      variation: 0

Custom commands

custom_commands:
  - value: "pls command1"
    interval: 60
  - value: "pls command2"
    interval: 300
    amount: 5
  - value: "pls command3"
  - value: "pls buy zz 20"
    pause_below_balance: 9000000

In example custom command 1, the value is sent every 60 seconds for infinite times, until the program enters the dormant state.

In example custom command 2, the value is sent every 5 minutes for a total of 5 times per active shift.

In example custom command 3, the value is sent once in the beginning of every active shift.

In example custom command 4, 20 zz will be bought whenever the balance is above 9,000,000.

Instances

Example if you would like to run two instances simultaneously and 24/7 (this shift configuration is not recommended):

clusters:
  default:
    master:
      token: "bmljZSB0cnkgYnV0IHRoaXMgaXM.bm90IGE.cmVhbCB0b2tlbg"
      channel_id: "791694339116892202"
    instances:
      - token: "b2YgY291cnNlIHRoaXM.aXNuJ3QgYQ.cmVhbCB0b2tlbiBlaXRoZXIsIHNpbGx5"
        channel_id: "791694383098495047"

Default values and when you can leave out fields

Because of the way Go structs work, most times, when you leave out a field in your config, it will default to a value such as 0 or false. This is useful to avoid clutter. In the default config many fields are left out because their values would have been set to 0 or false, but they are still available for use, of course. Simply lookup what configuration is possible for your object of choice in the configuration documentation above.

The only exception is the fields which are currently marked as optional, the features, suspicion_avoidance and shifts fields on every instance object. These fields are used to override the values you have specified in the regular features, suspicion_avoidance and shifts objects in the config. If you leave out one of these fields or a child field of one of these fields, the default configuration is not overridden and is used instead.

clusters:
   default:
      master:
         token: "bmljZSB0cnkgYnV0IHRoaXMgaXM.bm90IGE.cmVhbCB0b2tlbg" # Instance 1
         channel_id: "791694339116892202"
      instances:
         - token: "b2YgY291cnNlIHRoaXM.aXNuJ3QgYQ.cmVhbCB0b2tlbiBlaXRoZXIsIHNpbGx5" # Instance 2
           channel_id: "791694383098495047"
           shifts:
              - state: "active"
         - token: "MTI3OTgzNDcyMTkzNDM4Mg.ZmRzdg.dGhpcyBpcyBub3QgYW4gYWN0dWFsIH" # Instance 3
           channel_id: "791691923098486933"
           features:
              auto_tidepod:
                 enable: false

shifts:
  - state: "active"
    base: 21600
  - state: "dormant"
    base: 32400

In the example above, all instances use a shift configuration of 6 hours active, 9 hours dormant, except for the second instance. This instance overrides the shift configuration defined below with a shift configuration that is always active.

The third instance in this example, overrides the normal configuration with one where auto-tidepod is disabled (the rest of the config is left out for simplicity), the rest of the instances would still use auto-tidepod if it was enabled.

Disclaimer

This is a self-bot. Such bots are against Discord's terms of service. Automation of Dank Memer commands also breaks Dank Memer's rules. By using this software you acknowledge that we take no responsibility whatsoever for any action taken against your account, whether by Discord or Dank Memer, for not abiding by their respective rules.

Despite this, we believe the chance of detection by either Discord or Dank Memer to be low provided that you take appropriate measures to ensure this. This includes but is not limited to running the bot only in private channels, not being open about the fact that you use it and not running so much as to raise suspicion.

dankgrinder's People

Contributors

dankgrinder avatar osome1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dankgrinder's Issues

Easier config

it would be amazing if you could have a .txt file with tokens and a .txt file with channel ids
The grinder would then a random token and a random channel id and use it as an instance

It takes hours to input the channel ids and tokens into the quotation marks ant this will speed up the progess.

Need help

I just saw termux but I am more confused that I have can I run toll on it, should I have to do make from code option ๐Ÿ™‡

Editable pls bal cooldown

If I missed some way to pull this off with the current bot, I would appreciate an explanation on how to do it
This seems useless but hear me out. I created a bot which gambles up to 10mil, and then shares 5 mil to another account. The problem is it will only share if it checked the bal with pls bal, which is on a huge cooldown and blocks a few gamble runs.
Up to 7-8 empty runs, while my wallet is on 10 mil, resulting in a loss of money. It would be a nice improvement to make the balance features cooldown editable.

Custom commands.

Custom commands are usually very important, and they should be executed before any other command. My accounts execute other cmds and die before they can use the custom commands which is VERY annoying to say the least.

Clusters

Saw the update but was confused about the clusters. What do I put into that section and what does it do?

Dank Memer Update

the new update introduced a lot of things, when can we see any updates to the grinder?

Add a gambler

So what I would like is if you can add a mode where it does "pls bet max" forever, and when your balance is 10M+ (when you can't gamble anymore) it automatically deposits a custom amount which can be edited, and also make it use the fidget spinner automatically for the extra multiplier when gambling. this could earn me 100s of millions easily. Also if possible make it withdraw 5M whenever the bank balance is 0.

Need help

So you can use this tool on windows mac and Linux but anyone know how can I use it on android or I need a pc for this kind regard ๐Ÿ™‡ my discord id is my name ๐Ÿ˜€ (empty#8005)

"no token"

Hi, I'm on a windows laptop and this is not working as it says "no token" I had extracted the .zip and opened dankgrinder.exe, and it closed immediately, dragging it into cmd, it said "no token." how do i fix this?

Add pls use tide!

I think it would be really cool to be able to use tidepods using Dankgrinder, especially as more and more people are switching to Autobetting via custom commands.

Oof last question

I have clone tool in termux also edited it but I am unable to find which pkg I have to install so I can run config.yml also how to get token in android I serach on yt but i found nothing ๐Ÿ˜ฅ๐Ÿคง

Rigging some commands

Is there ANY way to change or predict the outcome of certain commands like "pls howgay" "pls simprate" or any other rate command that has a randomized chance of giving you a percentage, so for example I want to be able to get a high % of howgay at some certain times when I use the "pls howgay" command. Is there any way to predict or change the outcome?

Add pls work as an option!

While yes, there are a ton of different jobs in Dank Memer as found in pls work list,

You can make it where the user has to get a certain job like work as a Cosplayer then the bot will autofarm any pls work tasks the user has to do.

Thinks that BJ is global event

Expected behavior
The bot would automatically respond to global events alone.

Actual behavior
Whenever anyone does the blackjack command, it responds to it as if it were a global event

Steps to reproduce
Activate the bot, then do the blackjack command in the same channel that the bot is using

Logs

{"delay":"389ms","level":"info","msg":"sending command: pls hl","time":"2021-03-19T17:22:40-10:00","typing":"850ms"}
{"delay":"493ms","level":"info","msg":"responding to search: uber","time":"2021-03-19T17:22:46-10:00","typing":"769ms"}
{"delay":"435ms","level":"info","msg":"sending command: pls beg","time":"2021-03-19T17:22:47-10:00","typing":"989ms"}
{"delay":"286ms","level":"info","msg":"sending command: pls pm","time":"2021-03-19T17:22:48-10:00","typing":"981ms"}
{"delay":"202ms","level":"info","msg":"sending command: pls fish","time":"2021-03-19T17:22:54-10:00","typing":"1.07s"}
{"delay":"298ms","level":"info","msg":"responding to fishing or hunting event: get the camera ready mom","time":"2021-03-19T17:22:58-10:00","typing":"3.246s"}

{"delay":"275ms","level":"info","msg":"responding to global event: h` to **hit**, type `s` to **stand**, or type `e","time":"2021-03-19T17:23:01-10:00","typing":"6.489s"}

{"delay":"363ms","level":"info","msg":"responding to postmeme: c","time":"2021-03-19T17:23:08-10:00","typing":"328ms"}
{"delay":"262ms","level":"info","msg":"sending command: pls hunt","time":"2021-03-19T17:23:10-10:00","typing":"1.306s"}

{"delay":"408ms","level":"info","msg":"responding to global event: h` to **hit**, type `s` to **stand**, or type `e","time":"2021-03-19T17:23:16-10:00","typing":"6.486s"}

{"delay":"214ms","level":"info","msg":"responding to global event: h` to **hit**, type `s` to **stand**, or type `e","time":"2021-03-19T17:23:23-10:00","typing":"6.531s"}

{"delay":"184ms","level":"info","msg":"sending command: pls search","time":"2021-03-19T17:23:31-10:00","typing":"1.535s"}
{"delay":"173ms","level":"info","msg":"responding to search: pantry","time":"2021-03-19T17:23:33-10:00","typing":"898ms"}

{"delay":"130ms","level":"info","msg":"responding to global event: h` to **hit**, type `s` to **stand**, or type `e","time":"2021-03-19T17:23:35-10:00","typing":"6.576s"}

{"delay":"155ms","level":"info","msg":"sending command: pls hl","time":"2021-03-19T17:23:42-10:00","typing":"1.005s"}
{"delay":"278ms","level":"info","msg":"responding to highlow: low","time":"2021-03-19T17:23:44-10:00","typing":"469ms"}
{"delay":"455ms","level":"info","msg":"sending command: pls beg","time":"2021-03-19T17:23:45-10:00","typing":"1.033s"}
{"delay":"344ms","level":"info","msg":"sending command: pls pm","time":"2021-03-19T17:23:46-10:00","typing":"917ms"}
{"delay":"132ms","level":"info","msg":"responding to postmeme: r","time":"2021-03-19T17:23:49-10:00","typing":"350ms"}
{"delay":"187ms","level":"info","msg":"sending command: pls fish","time":"2021-03-19T17:23:49-10:00","typing":"1.139s"}

Unexpected panic after running for approximately 2 days

Expected behavior
The program to not panic

Actual behavior
The program panicked

Steps to reproduce
Run for approximately 2 days. 50 instances are run at the same time. May or may not affect this problem.

Logs

panic: send on closed channel

goroutine 35324892 [running]:
github.com/dankgrinder/dankgrinder/scheduler.(*Scheduler).ResumeWithCommandOrPrioritySchedule(...)
	/hgo/src/github.com/dankgrinder/dankgrinder/scheduler/scheduler.go:172
github.com/dankgrinder/dankgrinder/responder.(*Responder).hl(0xc00049b380, 0xc000b6ee60, 0x12, 0xc000b6eee0, 0x12, 0xc000b6ef40, 0x12, 0xc000b6ef00, 0x12, 0xc001377d64, ...)
	/go/src/github.com/dankgrinder/dankgrinder/responder/router.go:97 +0x2b4
github.com/dankgrinder/dankgrinder/discord.(*MessageRouter).process(0xc001a9f8f0, 0xc000b6ee60, 0x12, 0xc000b6eee0, 0x12, 0xc000b6ef40, 0x12, 0xc000b6ef00, 0x12, 0xc001377d64, ...)
	/go/src/github.com/dankgrinder/dankgrinder/discord/router.go:35 +0x1a2
created by github.com/dankgrinder/dankgrinder/discord.(*WSConn).listen
	/go/src/github.com/dankgrinder/dankgrinder/discord/websocket.go:132 +0x230
panic: send on closed channel

goroutine 18004094 [running]:
github.com/dankgrinder/dankgrinder/scheduler.(*Scheduler).ResumeWithCommandOrPrioritySchedule(...)
	/go/src/github.com/dankgrinder/dankgrinder/scheduler/scheduler.go:172
github.com/dankgrinder/dankgrinder/responder.(*Responder).search(0xc00040bec0, 0xc00012ebe0, 0x12, 0xc00012ec20, 0x12, 0xc00012ece0, 0x12, 0xc00012ec60, 0x12, 0xc0001c6784, ...)
	/go/src/github.com/dankgrinder/dankgrinder/responder/router.go:69 +0x32b
github.com/dankgrinder/dankgrinder/discord.(*MessageRouter).process(0xc001153350, 0xc00012ebe0, 0x12, 0xc00012ec20, 0x12, 0xc00012ece0, 0x12, 0xc00012ec60, 0x12, 0xc0001c6784, ...)
	/go/src/github.com/dankgrinder/dankgrinder/discord/router.go:35 +0x1a2
created by github.com/dankgrinder/dankgrinder/discord.(*WSConn).listen
	/go/src/github.com/dankgrinder/dankgrinder/discord/websocket.go:132 +0x230

Environment
OS: Ubuntu 20.04
Dank Grinder version: 0.8.0
Config: not relevant

BOT not responding to pls search.

NOTE: BOT here means DankGrinder and not DankMemer.

Expected behavior
The BOT was expected to respond with a valid search location.

Actual behavior
The BOT does not respond to it and goes into "await resume timed out for: pls search".

Steps to reproduce
Just run the bot and wait for the 'pls search' command to be executed. The bot does not respond to it (with search location name).

Logs
{"cluster":"default","instance":"apple#1212","level":"error","msg":"await resume timed out for: pls search","time":"2021-05-24T15:09:13+05:30"}

Environment
Windows 10
Dank Grinder version: 0.11.0

Config:

clusters:
default:
master: # mav
token: "XXX.XXX.XXX"
channel_id: "SOME NUMBER"

shifts:

  • state: "active"
    duration:
    base: 28800
    variation: 500
  • state: "dormant"
    duration:
    base: 57600
    variation: 500

features:
commands:
beg: true
postmeme: true
search: true
highlow: true
fish: true
hunt: true
custom_commands:
- value: "pls daily"
- value: "pls use lifesaver"
- value: "pls use horse"
interval: 1200
- value: "pls use zza"
interval: 1800
amount: 0
- value: "pls dig"
interval: 0
amount: 0

auto_buy:
fishing_pole: false
hunting_rifle: false
laptop: true
auto_sell:
enable: false
items:
- "boar"
- "dragon"
- "duck"
- "fish"
- "deer"
- "rabbit"
- "skunk"
auto_gift:
enable: false
items:
- "bank"
- "pizza"
-

REMOVED AUTO BJ CODE BECAUSE IT'LL TAKE TOO MUCH SPACE HERE..

auto_tidepod:
enable: false
buy_lifesaver_on_death: false
balance_check:
enable: false
interval: 180
log_to_file: true
verbose_log_to_stdout: false
debug: false

compatibility:
postmeme:
- "f"
- "r"
- "i"
- "c"
- "k"
allowed_searches:
- "area51"
- "purse"
- "glovebox"
- "fridge"
- "crawlspace"
- "bank"
- "van"
- "hospital"
- "basement"
- "mels room"
- "couch"
- "dog"
- "attic"
- "tree"
- "air"
- "bus"
- "coat"
- "dresser"
- "grass"
- "laundromat"
- "mailbox"
- "pantry"
- "pocket"
- "shoe"
- "sink"
- "car"
- "discord"

search_cancel:
- "no"
- "."
cooldown:
dig: 42
beg: 47
search: 32
highlow: 32
postmeme: 42
fish: 42
hunt: 42
blackjack: 13
sell: 6
gift: 26
share: 13
await_response_timeout: 5 # tried with a higher response timeout but the BOT just wont response...

suspicion_avoidance:
typing:
variation: 250
speed: 450
message_delay:
base: 100
variation: 400

Custom responses

a way to add custom responses to respond to events like if the bot asks you if you want to give a person a item
Are you sure

Auto Gift & Auto Share

It needs to say yes afterwards to confirm sending the item or money to the master instance.

"pls work" for exclusive items

For those who don't know about this yet, in the recent update of dank memer, they introduced exclusive items. They carry a lot of trading value in the dank memer market amongst dank memer users.
Getting the basic "pls work" commands running or maybe a whole "auto_work" category in the code would be a lot helpful and beneficial.

await_response_timeout doesnt respond to fish command response

Expected behavior
await_response_timeout waits for bot to reply, then will skip the timer.

Actual behavior
Works for everything but the fish command, then it will wait the entire delay instead of doing another command

Steps to reproduce
Set await_response_timeout to a large amount and allow fishing, bot will never do another command after the fish command because it will wait the entire timeout.

Logs
Not relevant

Environment
OS: Windows 10
Dank Grinder version: 0.10.0
Config: make sure to remove your tokens! E.g.

Config
instances:
  - token: ""
    channel_id: ""
    is_master: true
  - token: ""
    channel_id: ""
    is_master: false
  - token: ""
    channel_id: ""
    is_master: false
  - token: ""
    channel_id: ""
    is_master: false
  - token: ""
    channel_id: ""
    is_master: false
shifts:
  - state: "active"
    duration:
      base: 54000
  - state: "dormant"
    duration:
      base: 0

features:
  commands:
    beg: true
    postmeme: true
    search: true
    highlow: true
    fish: true
    hunt: true
  custom_commands:
  auto_buy:
    fishing_pole: true
    hunting_rifle: true
    laptop: true
  auto_sell:
    enable: true
    items:
      - "boar"
      - "dragon"
      - "duck"
      - "fish"
      - "deer"
      - "rabbit"
      - "skunk"
      - "bread"
      - "cheese"
      - "fish"
      - "rarefish"
  auto_gift:
    enable: true
    items:
      - "bank"
      - "pizza"
      - "chillpill"
      - "candy"
  auto_share:
    enable: true
    maximum_balance: 30000
    minimum_balance: 10000
  auto_blackjack:
    enable: true
    priority: true
    pause_below_balance: 10000
    logic_table:
      2:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      3:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      4:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "stand"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      5:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "stand"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      6:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "stand"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      7:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      8:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      9:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      10:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      A:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "hit"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
  auto_tidepod:
    enable: false
    buy_lifesaver_on_death: true
  balance_check:
    enable: true
    interval: 180
  log_to_file: true
  debug: false

compatibility:
  postmeme:
    - "f"
    - "i"
    - "k"
  allowed_searches:
    - "bus"
    - "coat"
    - "dresser"
    - "grass"
    - "laundromat"
    - "mailbox"
    - "pantry"
    - "pocket"
    - "shoe"
    - "sink"
  search_cancel:
    - "h"
  cooldown:
    beg: 48
    search: 38
    highlow: 33
    postmeme: 63
    fish: 63
    hunt: 63
    blackjack: 13
    sell: 6
    gift: 26
  await_response_timeout: 7

suspicion_avoidance:
  typing:
    variation: 250
    speed: 450
  message_delay:
    base: 500
    variation: 400

Add server-wide event participation

Add a feature that enables the user to automatically reply to any event in any server/channel with the appropriate response. This could be done by using a webhook that logs the key events.

Auto sell dosent work

Hi developers of dankgrinder the feature auto sell dosent work the script auto sell doesn't sell items can u please fix this

User of dankgrinder

Autoblackjack Isn't Working

Expected behavior
The bot to automatically play blackjack.

Actual behavior
I enabled it in the config, and it wouldn't do it at all. I used the most recent version.

Avoid Suspicion

Hi how are you,
Hope you are doing well, so i installed this today and i realized when the bot does blackjack it says pls blackjack max and hit or stand. It would be better if you me it to pls bj max and h or s. Cause almost everyone does short form i haven't seen anyone do in the full form. So full form could make people sus. Just a suggestion hope u take it into consideration

Pause Below Amount

Description
I would like to ATTEMPT to make a pause_below_balance feature.

Affected components
config/config.go: Reading the yaml
config/validate.go: Added an error if pause_below_balance is below 0
instance/commands.go: Added a thing that could (well, should) compare the balance to the PauseBelowBalance thingy
config.yml: Added another thing under the auto-gift section

Additional comments
Very unlikely I actually do it and get it working, but opening a request just to make sure I don't waste my "precious" hours on something that is already being worked on.

Add auto-use horseshoe

The Horseshoe item in Dank Memer allows you to have an increase luck in using normal command such as fish, postmemes, hunt, beg, gamble, and etc.

With it being automatically used when it breaks you can constantly get more money.

error while building the file from source

When i try to build the file from source, this error is shown:
FATA[0000] invalid config: compatibility.search_cancel: no compatibility options
I have checked my yaml file and was not able to find any error. how do i solve this?

Master

What should i add to the master instance so it autoshares itmes

Heists.

Do you think there could be a way of adding a heist sniper and automatically join them? Or giveaways. Thanks btw for the instant response on my last post and keep up the good work!

Custom Bj Amount

After using this for a while, (it has been working great btw other than this reason im about to mention!) I realized that it was losing a lot of money and not being able to bj again, so I was wondering if there is a way for me to set the bj amount to something else instead of max (perhaps a certain percentage of my current wallet or a set figure). Thanks!

A neat suggestion for farming coins.

Hello, my name is ATP Zombie and a fairly new user of dank grinder. I wanted to talk about the command "pls trivia" in this suggestion. What the command does is it shows you a trivial question, and if you get it right you may get from 500-2000 coins.
I'm not sure how auto solving it would work but I'm sure you can figure it out, one bot (dank helper) has already managed that.

Update the code

Expected behavior
The behavior you expected

Actual behavior
What actually happened

Steps to reproduce
How the problem can be reproduced from a clean installation

Logs
If relevant, paste any errors or other logs here.

Environment
OS: e.g. MacOS 10.14.2, Windows, Ubuntu 20.04
Dank Grinder version: e.g. 1.4.12
Config: e.g.

{
  "token": "thisisausertoken",
  "channel_id": "123456789",
  "user_id": "123456789",
  "enable": {
    "fish": true,
    "hunt": true
  },
  "response_delay": 0,
  "command_delay": 4000,
  "typing_duration": 500,
  "postmeme": [
    "f",
    "r",
    "i",
    "c",
    "k"
  ],
  "global_events": [
    **"krampus is a nerd",
    "whoville sucks",
    "build snowman",
    "make snow angel",
    "frick off",
    "happy holidays",
    "throw snowball",
    "push",
    "I've been a very good kid",
    "gimme gimme"**
  ],
  "search": [
    **"mistletoe",
    "christmas tree",
    "christmas card",
    "advent calendar"**
  ],
  "balance_check": {
    "enable": false,
    "username": ""
  },
  "auto_buy": {
    "fishing_pole": true,
    "hunting_rifle": true,
    "laptop": true
  }
}

Additional comments
Any other information that might be helpful but does not fit in the above categories.

PLS change the bolded part

Lottery

Hi I wanted to thank you for the immediate reply to my previous suggestion,
So as you know the lottery is not auto now so we have to do it manually every hour so I was thinking whether it was possible to add it to the grinder. I did some messing around in the config but I don't think it works. Lemme copy paste what i did. I suck at programming btw.

features:
commands:
lottery: true

compatibility:
lottery:
- "yes"

cooldown:
lottery: 3600

I think you guys have to enter it into the source code or something I am really not sure since I suck at programming but hope it help and you guys have awesome reply time congrats on that

auto gift

u now have to confirm by typing yes after every gift command to send the items to the master account

How do I use the auto_share option in the config?

I have 2 other alts that are actively autofarming coins and I want those alts to give all of its coins to my main, how would I do that as I'm not sure how to use the auto_share option in the config, as I set it to true but I'm not sure what else to do.

For other bots

Hi how are are you guys doing I was thinking whether it is possible for you guys to make a grinder like this for virtual fisher, rpg, owo and other bots or if there is already a auto grinder for this bots please send me the link. thank you so much

auto_blackjack not functioning

Expected behavior
It should've hit/stand in the auto_blackjack feature.

Actual behavior
It just runs pls bj max all the time.

Attachments
https://imgur.com/tFRv8p9

Environment
Windows 10 64

Dank Grinder version: 0.11.0

   auto_blackjack:
   enable: true
   priority: true
   amount: 500
   pause_below_balance: 5000
   logic_table: 
     2:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "s"
       16: "s"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "s"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     3:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "s"
       16: "s"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "s"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     4:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "s"
       15: "s"
       16: "s"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "s"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     5:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "s"
       15: "s"
       16: "s"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "s"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     6:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "s"
       15: "s"
       16: "s"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "s"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     7:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "h"
       16: "h"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "s"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     8:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "h"
       16: "h"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "h"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     9:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "h"
       16: "h"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "h"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     10:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "h"
       16: "h"
       17: "s"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "h"
       soft18: "s"
       soft19: "s"
       soft20: "s"
     A:
       4: "h"
       5: "h"
       6: "h"
       7: "h"
       8: "h"
       9: "h"
       10: "h"
       11: "h"
       12: "h"
       13: "h"
       14: "h"
       15: "h"
       16: "h"
       17: "h"
       18: "s"
       19: "s"
       20: "s"
       soft12: "h"
       soft13: "h"
       soft14: "h"
       soft15: "h"
       soft16: "h"
       soft17: "h"
       soft18: "s"
       soft19: "s"
       soft20: "s"

Auto Blackjack

so im a little confused on how the auto blackjack works. when i turn it on, it checks the balance and starts to blackjack but the autobot doesnt respond with hit or stand, it just keeps typing "pls blackjack max" and blows your money. i checked the logs and it said await resume timed out for: pls blackjack max. could someone help me with this?

Giving balances to main

I am currently running 4 acc's and 1 of them being my main, I had the intent to farm alot of money, send it to my main and coin bomb all my friends servers for some activity and interest but even though i do the custom command right. The command is not working because the application does not @ the user so i can not transfer all my coins on my alts to my main... any resolution for this ?

How to do it?

sorry im a bit retarded do you mind makign a video showing how to do it ? it would really help out

bug

Expected behavior
It Supposed to start and log commands

Actual behavior
It Starts And Closes

Steps to reproduce
I tired with a new installation and it still had same issue

Logs
If relevant, paste any errors or other logs here.

Environment
OS: e, Windows,
Dank Grinder version: latest one 6/4/21
Config:

instances:
  - token: ""
    channel_id: ""
    shifts:
      - state: "active"
        duration:
          base: 0
          variance: 0

features:
  commands:
    fish: true
    hunt: true
  custom_commands:
  auto_buy:
    fishing_pole: true
    hunting_rifle: true
    laptop: true
  auto_sell:
    enable: false
    interval: 0
    items:
      - "boar"
      - "dragon"
      - "duck"
      - "fish"
      - "deer"
      - "rabbit"
      - "skunk"
  auto_gift:
    enable: false
    to: ""
    interval: 0
    items:
      - "kn"
      - "zz"
  balance_check: true
  log_to_file: true
  debug: false

compatibility:
  postmeme:
    - "f"
    - "r"
    - "i"
    - "c"
    - "k"
  allowed_searches:
    - "bus"
    - "coat"
    - "dresser"
    - "grass"
    - "laundromat"
    - "mailbox"
    - "pantry"
    - "pocket"
    - "shoe"
    - "sink"
    - "car"
  search_cancel:
    - "no"
    - "bad options"
    - "i don't want to die"
    - "stop"
    - "."
  cooldown:
    beg: 45
    search: 30
    highlow: 20
    postmeme: 60
    fish: 60
    hunt: 60
    margin: 3
  await_response_timeout: 4

suspicion_avoidance:
  typing:
    base: 0
    variance: 250
    speed: 450
  message_delay:
    base: 100
    variance: 400

Automatic Life Saver

Always have a life saver in your inventory and when it breaks, it purchases a new one. Maybe implement a minimum wallet, so it doesn't waste a life saver when your wallet is <10k

BJ Instance does not read the card value

Expected behavior
Message logger should read hand total value, and use the logic table to respond with hit or stand

Actual behavior
PLS BJ 100000 would transmit, and the command will get run over by another command. voiding the bj bet

Steps to reproduce
after personal details. Disable all commands except BJ, and bal check. Match BJ Instance as follows:
auto_blackjack:
enable: true
priority: false
amount: 100000
logic_table:

Logs
--personal tag removed and replaced with "player"--

Logs
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:09:57-05:00"}
{"delay":"461ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:09:58-05:00","typing":"1.052s"}
{"delay":"327ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:10:18-05:00","typing":"1.018s"}
{"delay":"470ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:10:37-05:00","typing":"1.071s"}
{"delay":"400ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:10:56-05:00","typing":"976ms"}
{"level":"fatal","msg":"invalid config: invalid auto-blackjack logic table key: 1","time":"2021-03-30T03:12:03-05:00"}
{"level":"fatal","msg":"invalid config: invalid auto-blackjack logic table key: 1","time":"2021-03-30T03:12:05-05:00"}
{"level":"fatal","msg":"invalid config: invalid auto-blackjack logic table key: 1","time":"2021-03-30T03:12:05-05:00"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:12:25-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:12:25-05:00"}
{"delay":"256ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:12:25-05:00","typing":"1.144s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:12:36-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:12:36-05:00"}
{"delay":"289ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:12:38-05:00","typing":"987ms"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:13:41-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:13:41-05:00"}
{"delay":"156ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:13:42-05:00","typing":"998ms"}
{"delay":"490ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:13:43-05:00","typing":"2.781s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:17:27-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:17:27-05:00"}
{"delay":"299ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:17:28-05:00","typing":"974ms"}
{"delay":"323ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:17:29-05:00","typing":"2.871s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:18:04-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:18:04-05:00"}
{"delay":"494ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:18:05-05:00","typing":"1.038s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:18:26-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:18:26-05:00"}
{"delay":"160ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:18:27-05:00","typing":"1.13s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:19:04-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:19:04-05:00"}
{"delay":"188ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:19:04-05:00","typing":"1.101s"}
{"delay":"293ms","level":"info","msg":"responding to global event: draw","time":"2021-03-30T03:19:06-05:00","typing":"536ms"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:19:31-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:19:31-05:00"}
{"delay":"147ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:19:32-05:00","typing":"1.09s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:19:59-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:19:59-05:00"}
{"delay":"332ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:20:00-05:00","typing":"1.056s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:20:23-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:20:23-05:00"}
{"delay":"306ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:20:23-05:00","typing":"1.177s"}
{"delay":"481ms","level":"info","msg":"responding to global event: chug","time":"2021-03-30T03:20:25-05:00","typing":"721ms"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:24:04-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:24:04-05:00"}
{"delay":"302ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:24:04-05:00","typing":"1.06s"}
{"delay":"487ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:24:06-05:00","typing":"2.879s"}
{"delay":"194ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:24:22-05:00","typing":"2.8s"}
{"delay":"492ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:24:31-05:00","typing":"1.019s"}
{"delay":"470ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:24:38-05:00","typing":"2.691s"}
{"delay":"415ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:24:50-05:00","typing":"1.114s"}
{"delay":"173ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:24:54-05:00","typing":"2.804s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:25:22-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:25:22-05:00"}
{"delay":"414ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:25:22-05:00","typing":"1.138s"}
{"delay":"242ms","level":"info","msg":"sending command: pls blackjack 100000","time":"2021-03-30T03:25:24-05:00","typing":"2.816s"}
{"level":"info","msg":"successful authorization as player","time":"2021-03-30T03:41:21-05:00"}
{"duration":21600000000000,"level":"info","msg":"starting shift 1","state":"active","time":"2021-03-30T03:41:21-05:00"}
{"delay":"143ms","level":"info","msg":"sending command: pls bal","time":"2021-03-30T03:41:22-05:00","typing":"1.119s"}

Environment
OS: Windows 10.0.19042
Dank Grinder version: 0.10.1

Config:

Config
instances:
  - token: ""
    channel_id: ""
    shifts:
  - state: "active"
    duration:
      base: 21600
  - state: "dormant"
    duration:
      base: 32400

features:
  commands:
    beg: false
    postmeme: false
    search: false
    highlow: false
    fish: false
    hunt: false
  custom_commands:
  auto_buy:
    fishing_pole: true
    hunting_rifle: true
    laptop: true
  auto_sell:
    enable: false
    items:
      - "boar"
      - "dragon"
      - "duck"
      - "fish"
      - "deer"
      - "rabbit"
      - "skunk"
  auto_gift:
    enable: false
    items:
      - "bank"
      - "pizza"
  auto_share:
    enable: false
    maximum_balance: 8000000
    minimum_balance: 5000000
  auto_blackjack:
    enable: true
    priority: false
    amount: 100000
    logic_table:
      2:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      3:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      4:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "stand"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      5:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "stand"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      6:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "stand"
        15: "stand"
        16: "stand"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      7:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "stand"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      8:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      9:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      10:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "stand"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
      A:
        4: "hit"
        5: "hit"
        6: "hit"
        7: "hit"
        8: "hit"
        9: "hit"
        10: "hit"
        11: "hit"
        12: "hit"
        13: "hit"
        14: "hit"
        15: "hit"
        16: "hit"
        17: "hit"
        18: "stand"
        19: "stand"
        20: "stand"
        soft12: "hit"
        soft13: "hit"
        soft14: "hit"
        soft15: "hit"
        soft16: "hit"
        soft17: "hit"
        soft18: "stand"
        soft19: "stand"
        soft20: "stand"
  auto_tidepod:
    enable: false
    buy_lifesaver_on_death: true
  balance_check:
    enable: true
    interval: 18
  log_to_file: true
  debug: false

compatibility:
  postmeme:
    - "f"
    - "r"
    - "i"
    - "c"
    - "k"
  allowed_searches:
    - "bus"
    - "coat"
    - "dresser"
    - "grass"
    - "laundromat"
    - "mailbox"
    - "pantry"
    - "pocket"
    - "shoe"
    - "sink"
  search_cancel:
    - "no"
    - "bad options"
    - "i don't want to die"
    - "stop"
    - "."
  cooldown:
    beg: 48
    search: 38
    highlow: 33
    postmeme: 63
    fish: 63
    hunt: 63
    blackjack: 13
    sell: 6
    gift: 26
  await_response_timeout: 6

suspicion_avoidance:
  typing:
    variation: 250
    speed: 450
  message_delay:
    base: 100
    variation: 400

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.