Code Monkey home page Code Monkey logo

autofishbot's Introduction

AFB - Autofishbot

Auto fishing bot made in Python 3 for Virtual Fisher Discord bot.

Features

  • Auto Fish
  • Menu (TUI)
  • Captcha Bypass *
  • Full-featured (auto boosts, auto daily, auto sell, and +)
  • Interactions (buttons and slash commands)

Note: the experimental-2.0.0 (current) version is still under development, if you are having problems, a stable release (1.2.1.1) can be found here.

Demo

demo

Requirements

Installation and Update

(With Git)

  • Using the terminal, type:
git clone https://github.com/thejoabo/autofishbot.git
cd autofishbot
python -m pip install -r requirements.txt

(Without Git)

  • Download the repository here
  • Extract the zip file
  • Open a terminal window in the extracted folder and type:
python -m pip install -r requirements.txt

Usage

Using the terminal, in the repository folder, type:

python autofishbot.py 

Notes:

  • You can use python autofishbot.py config_name to run the bot with a specific config file.
  • You can use python autofishbot.py --create to create a new config file.
  • In the first startup, the bot will ask you to fill the configuration file name (which will be stored at '{autofishbot directory}/configs/' folder). After setting everything up, run the command again. In case of several config files, you will be prompted to choose one.

Customization

You can easily customize the options listed below in the automatically generated config file:

#Example
[SYSTEM]
user_token = M@yToke_n123
user_cooldown = 3.5
channel_id = 123456
debug = False

[CAPTCHA]
ocr_api_key = MyK!ey12.3

[NETWORK]
user_agent = 
proxy_ip =
proxy_port =
proxy_auth_user = 
proxy_auth_password = 

[AUTOMATION]
boosts_length = 5
more_fish = True
more_treasures = False
fish_on_exit = True
auto_daily = True
auto_buy_baits = False
auto_sell = True
auto_update_inventory = False

[MENU]
compact_mode = False
refresh_rate = 0.3

[COSMETIC]
pet = dolphin
bait = fish
biome = ocean

Detailed information here.

Captcha Information

All captchas are solved using the OCR.SPACE API for image to text recognition. The reason for choosing an online API was to avoid the annoyance of forcing users to install heavy image recognition modules (and saving the unnecessary effort of creating a specific image recognition model for this type of captcha). Among the API options, the most practical and accessible for the user is OCR.SPACE and, furthermore, it presented a reasonable consistency in correctly identifying the text in the image in the tests performed. Therefore, to automatically solve the captchas, you will need an API KEY.

The methodology is quite straight forward, when a new captcha is detected:

  1. A request is sent asynchronously to the API for each available OCR engine
  2. The answers are filtered to assert those with reasonable certainty
  3. The filtered answers are tested

If all tests fail, a request to regenerate the captcha will be sent (up to 3 times). If the bot, ultimately, fails to solve all captchas, it will wait until you solve it manually.

Keep in mind that the captcha detection method is not flawless, unexpected events can cause some unusual behavior that could influence detection accuracy. Therefore, it should not be left alone without monitoring for longer periods of time.

Demo (normal)

captcha-demo

Demo (with regen)

captcha-demo-wrong-code

HOW DO I GET MY FREE KEY ?

All you need to do is use any email to get it here: https://ocr.space/ocrapi/freekey.

Need more help ?

Changelog

experimental-2.0.0 - 11/20/22 (current)

Added

  • added Scheduler class (#38) - experimental
    • Allows slash commands to be sent using keybinds
    • Creates, controls and pseudo-randomizes automation routines (boosts and auto_* features) → attempts to mimic human behavior
    • Sporadically mid-session 'break time'
  • DiscordWrapper new features
    • added Proxy class integration
      • native proxy support (HTTPS only)
    • session reconnections
  • Menu new features
    • BaseMenu
      • support for custom keybinds ('./app/keybinds.json') by Keybinder class
      • CPU and Memory consumption reduced - better logic and structure overall (removed redundant calculations and function calls, simplification, +)
      • asynchronous notifications 'server' (threaded) → notifications are now queued and have priority and display time
      • 'Config Status' panel split in 'App info' and 'Config Status' (with better choices of information to be displayed)
      • Popup widget → extra information (like quests, exotic fishes, current inventory, charms and buffs) can be viewed in a popup format (see example)
    • MainMenu(BaseMenu) - "normal" mode
      • design changes (see comparison)
      • screen strings are now resized dynamically to fit the terminal size
      • added the Leaderboards panel
      • added more profile information to the Inventory panel
      • better exceptions handling
    • CompactMenu(BaseMenu) - compact mode
  • ConfigManager new features
    • argument support for loading specific configs (e.g. python autofishbot.py some_config_name) (adaptation of @notvirtio 's solution #51)
    • support for the creation of new (alt) configs using arguments (python autofishbot.py --create)
    • new parameters:
      • Network: proxy_ip, proxy_port, proxy_auth_user, proxy_auth_password, user_agent
      • Automation:
        • added auto_sell, auto_buy_baits, auto_update_inventory, auto_daily
        • splitted auto_buff in more_fish and more_treasures
        • renamed buff_length to boosts_length
      • Menu: refresh_rate
      • Cosmetic: pet, bait, biome (not yet implemented)
  • Profile new features
    • support to charms inventory (/charms) + Charms datatype class
    • support to user leaderboards (/pos) + Leaderboard datatype class
    • support to buffs (multipliers list) (/buffs) + Buffs datatype class
    • support to quests list (/quests) + QuestList and Quest datatype class

Changed

  • refactored DiscordWrapper class
    • discord's API (v9 → v10)
    • connect function's structure
    • heartbeat routine (adjusting to documentation requirements)
    • receive_event function (better error management and pre deserialization)
    • application commands and guild ID are now loaded on start-up
    • request function (discord's HTTP API requests):
      • simplification and better data structure
      • better handling of exceptions (and proper returns)
      • better error management to failure requests
      • proper handling of discord's rate limits (429 error) (improvement of @gabeaventh 's solution #36)
  • refactored Captcha class
    • compartmentalization
    • multi-threading solving (asynchronous ocr-engine requests) → each engine request is made simultaneously, so captcha solving time is significantly faster.
    • captcha detection function (added conditional safeguards)
    • status flags (ensuring transparency of actions for external classes)
  • message_dispatcher function converted to Dispatcher class
    • improvements in conditional gates to send commands (safer method)
    • "pause" property, to globally pause the dispatcher (instead of a standalone class)
    • improvements in sending captcha-related commands
    • improvements in cooldown calculations (to consider for network ping between requests oscillations/processing time, in order to preserve the Gaussian approach of value generation)
  • message_receiver function converted to Receiver class
    • better event checking, parsing and validation
    • simplification (removed unnecessary event validation, improvements in code structure, +)
    • improvements in messages categorization
    • untitled (and unhandled) messages are now properly sanitized and displayed on notifications
    • better logic to detect captchas in raw events
    • incorrect captcha code messages are now treated
    • added of more breakpoints conditionals (in case of abnormal behavior)
  • refactored Profile class
    • compartmentalization
    • attribute fields (instead of a global fixed list)
    • lists (displayed on menu) are now constructed individually per attribute (datatype classes) using the list property
    • update function
    • gold, diamond, emerald and lava fishes are now grouped to ExoticFish class
  • refactored CooldownManager class
    • simplification
    • analysis functions removed
  • refactored Message class
    • better message parsing and fields categorization
    • untitled and contentless message are now handled
  • refactored ConfigManager class
    • better loading/saving logic of config files
    • compartmentalization of config parameters (system, captcha, network, automation, menu and cosmetic)
    • better value parsing and validation
  • refactored Debugger class
    • simplification
    • outputs errors and exceptions to 'debug.log' file instead of displaying them on terminal
  • PauseControl class removed (integrated in Dispatcher class)
  • MenuManager class removed (split in BaseMenu, MainMenu(BaseMenu), CompactMenu(BaseMenu) classes)
  • autoBuff function removed (integrated in Scheduler class)

Fixed

  • fixed a bug in which the sanitize function in Message class couldn't parse some characters
  • fixed a bug in which required fields weren't validated in ConfigManager (#48)
  • fixed a bug in which captcha.regen counter were redefined after solution failure
  • fixed a bug in which the bait name overlaps the border in compact mode - inventory (and related information) can be viewed separately on a popup using their respective keybinds (#50)
  • fixed a bug in which the curses kept blinking on screen's last update position

...

FULL CHANGELOG HERE

Contributing

  • Pull requests are welcome. For major changes, open an issue first to discuss what you would like to change.
  • If you notice any errors, bugs or strange behavior PLEASE OPEN AN ISSUE containing a screenshot or describing the problem.
  • Suggestions and Pull requests are welcome.

autofishbot's People

Contributors

thejoabo avatar dependabot[bot] avatar infer2 avatar yudhistiraindyka avatar wacns avatar djmango avatar gabeaventh avatar

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.