Coder Social home page Coder Social logo

poe_tracker's People

Contributors

jmurrayufo avatar

Stargazers

 avatar

Watchers

 avatar

poe_tracker's Issues

Handle index creation programicly

When we create indexes, we can error out if it's an update. Handle these programmatically so we can simply drop an index if we need to change it's settings.

Module Based ArgParse Generation

Generate the arguments list, which currently lives in a massive poe.py function, in each of the submodules (trade, accounts, etc).

Check out sub-sub-parsers to see if they make sense to use as well.

Support auto-pricing tab

Allow players who have registered with the bot to place their items in a stash tab with a specific note, and recieve DMs of item price estimates.

Players will first ask the bot what note to use by giving a command:
@poebot autoprice

@player Please create a public tab with note 12345-12345-12345

Poe Bot will then track the public API for changes to this tab, and any new items should receive a price quote. This will be DMed/Replied to the player who requested the quoting tab.

Questions:

  • Should this tab last forever?
  • Should the tag just be to same for everyone, or created on the fly?

Types we can handle:

  • Currency
  • Div cards
  • Uniques
  • Rares
  • Essences
  • Maps
  • Jewels
  • Flasks

Cache Currency Prices

  • Save current estimated prices
  • Update prices as needed
    • Priority given to volatile items
    • Priority given to price checked items

Item/Stash Pipeline

Stash Pipeline

  • API Pull
  • Preprocessor (Unified)
    • Item array replaced
    • Filtered for validity
      • Name
      • League
  • Upsert
  • Age off (deleted)

Item Pipeline

  • API Pull
  • Preprocessor (Unified)
    • Remove unneeded fields
      • "descrText"
      • "flavourText"
      • "icon"
    • Simplify data
      • Flatten properties
      • Flattern requirements
      • Simplify sockets
    • Branch to alternative pipelines as needed
  • Upsert
  • Scanned for 'sale'
  • Postprocessor
    • Stored to db.sales.<class>
    • NN Training
    • Age off

Parse ctrl+c items from chat

we should be able to do the following

@poebot price Rarity: Magic
Healthy Hypnotic Eye Jewel of Opportunity
--------
Abyss
--------
Requirements:
Level: 28
--------
Item Level: 70
--------
+26 to maximum Life
7% increased Attack Speed if you've dealt a Critical Strike Recently
--------
Place into an Abyssal Socket on an Item or into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.
--------
Note: ~price 1 chaos

or

@poebot price Rarity: Rare
Damnation Strap
Stygian Vise
--------
Requirements:
Level: 48
--------
Sockets: A 
--------
Item Level: 75
--------
Has 1 Abyssal Socket (implicit)
--------
+14 to Strength
+39 to maximum Life
24% increased Stun Duration on Enemies
15% increased Stun and Block Recovery
33% increased Elemental Damage with Attack Skills
--------
Note: ~price 5 chaos

And have the bot respond with a reasonable return value

Rarity: Rare
You cannot use this item. Its stats will be ignored
--------
Soul Volley
Decimation Bow
--------
Bow
Quality: +28% (augmented)
Physical Damage: 40-104 (augmented)
Elemental Damage: 38-63 (augmented)
Critical Strike Chance: 7.50% (augmented)
Attacks per Second: 1.31 (augmented)
--------
Requirements:
Level: 72
Dex: 170 (unmet)
Int: 159 (unmet)
--------
Sockets: W-G-B-G-B-B 
--------
Item Level: 76
--------
50% increased Critical Strike Chance (implicit)
--------
Socketed Gems are supported by Level 20 Cast On Critical Strike
Adds 38 to 63 Fire Damage
9% increased Attack Speed
20% chance to deal Double Damage
71% increased Cold Damage (crafted)
20% chance to Freeze (crafted)
--------
Shaper Item
Rarity: Rare
You cannot use this item. Its stats will be ignored
--------
Horror Impaler
Imperial Claw
--------
Claw
Quality: +20% (augmented)
Physical Damage: 30-78 (augmented)
Elemental Damage: 21-43 (augmented), 9-165 (augmented)
Critical Strike Chance: 8.28% (augmented)
Attacks per Second: 1.86 (augmented)
Weapon Range: 11
--------
Requirements:
Level: 70
Dex: 131
Int: 155 (unmet)
--------
Sockets: B-B-B 
--------
Item Level: 77
--------
+46 Life gained for each Enemy hit by Attacks (implicit)
--------
Adds 21 to 43 Fire Damage
Adds 9 to 165 Lightning Damage
16% increased Attack Speed
38% increased Critical Strike Chance
+27% to Global Critical Strike Multiplier (crafted)
Rarity: Rare
Cataclysm Stinger
Decimation Bow
--------
Bow
Quality: +28% (augmented)
Physical Damage: 40-104 (augmented)
Critical Strike Chance: 7.45% (augmented)
Attacks per Second: 1.35 (augmented)
--------
Requirements:
Level: 60
Dex: 170 (unmet)
--------
Sockets: B-G-W-B-W-B 
--------
Item Level: 78
--------
49% increased Critical Strike Chance (implicit)
--------
Socketed Gems are supported by Level 18 Cast On Critical Strike
12% increased Attack Speed
+157 to Accuracy Rating
20% chance to deal Double Damage
--------
Shaper Item
Rarity: Rare
Blood Branch
Short Bow
--------
Bow
Physical Damage: 6-16
Critical Strike Chance: 5.00%
Attacks per Second: 1.50
--------
Requirements:
Level: 72
Str: 73
Dex: 111
Int: 111
--------
Sockets: B-B-B-G-G-R 
--------
Item Level: 50
--------
+1 to Level of Socketed Gems
Can have up to 3 Crafted Modifiers (crafted)
+2 to Level of Socketed Support Gems (crafted)
+39% to Chaos Damage over Time Multiplier (crafted)
16% increased Chaos Damage (crafted)
18% increased Cast Speed (crafted)
10% chance to gain Arcane Surge when you Kill an Enemy (crafted)

Commands to Enable/Disable market data pulling

Depends on #6 to be completed first.

Support commands to the poebot to enable or disable market polling

@poebot market enable
@poebot market disable
@poebot market status
@poebot market poe-ninja

Tab Worth Estimation Command

  • Support name of tab
  • Support all tabs
  • Support various levels of detail
    • Tab summery
    • Per stack
    • Per item
    • Item trends

Weight values by amount on market

We don't currently track extra (unmarked) instances of items for sale. In order to properly track the value of an item, we need to weight each seller by the amount they are selling. This means somehow tracking the stash of the seller, checking for like-typed but unmarked items, and parsing it.

Bad commands don't offer help

Jan 05 13:31:13 discord-bots bash[32358]: INFO poe.py:on_message:38 Saw a mention of me, handle it!
Jan 05 13:31:13 discord-bots bash[32358]: INFO poe.py:command_proc:67 <@655139987829948432> -plot worlddomination
Jan 05 13:31:13 discord-bots bash[32358]: INFO poe.py:command_proc:69 Command was: '-plot worlddomination'
Jan 05 13:31:13 discord-bots bash[32358]: INFO poe.py:command_proc:169 Parse Arguments
Jan 05 13:31:13 discord-bots bash[32358]: ERROR poe.py:command_proc:190 invalid choice: 'worlddomination' (choose from 'register', 'leaderboard', 'test', 'list', 'plot')
Jan 05 13:31:13 discord-bots bash[32358]: ERROR poe.py:command_proc:191 ???
Jan 05 13:31:33 discord-bots bash[32358]: INFO poe.py:on_message:38 Saw a mention of me, handle it!
Jan 05 13:31:33 discord-bots bash[32358]: INFO poe.py:command_proc:67 <@!655139987829948432> plot worlddomination
Jan 05 13:31:33 discord-bots bash[32358]: INFO poe.py:command_proc:69 Command was: 'plot worlddomination'

Key error from headers

2020-01-02 08:05:08,597 ERROR trade_loop.py:loop:60 Task threw exception
Traceback (most recent call last):
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/trade_loop.py", line 56, in loop
    r = queue_stash_task.result()
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/trade_loop.py", line 254, in queue_up_stashes
    async for data in x.iter_data():
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/api.py", line 89, in iter_data
    if not await self.pull_data():
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/api.py", line 57, in pull_data
    self.log.debug(r.headers['X-Rate-Limit-Ip'])
  File "/home/jmurray/.local/share/virtualenvs/poe_tracker-AjO3I1LM/lib/python3.7/site-packages/httpx/models.py", line 512, in __getitem__
    raise KeyError(key)
KeyError: 'X-Rate-Limit-Ip'
2020-01-02 08:05:08,599 INFO trade_loop.py:loop:61 Restarting queue_up_stashes
2020-01-02 08:05:08,599 INFO trade_loop.py:queue_up_stashes:244 Begin queue_up_stashes
2020-01-02 08:05:15,606 ERROR trade_loop.py:loop:60 Task threw exception
Traceback (most recent call last):
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/trade_loop.py", line 56, in loop
    r = queue_stash_task.result()
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/trade_loop.py", line 254, in queue_up_stashes
    async for data in x.iter_data():
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/api.py", line 89, in iter_data
    if not await self.pull_data():
  File "/home/jmurray/Git/poe_tracker/poe_tracker/code/POE/trade/api.py", line 57, in pull_data
    self.log.debug(r.headers['X-Rate-Limit-Ip'])
  File "/home/jmurray/.local/share/virtualenvs/poe_tracker-AjO3I1LM/lib/python3.7/site-packages/httpx/models.py", line 512, in __getitem__
    raise KeyError(key)
KeyError: 'X-Rate-Limit-Ip'
2020-01-02 08:05:15,607 INFO trade_loop.py:loop:61 Restarting queue_up_stashes
2020-01-02 08:05:15,607 INFO trade_loop.py:queue_up_stashes:244 Begin queue_up_stashes```

Command: Stash Tab Pricing

Price out a stash tab(s) for the user. This might take quite some time, so the user should be appraised of the commands progress as it executes.

Arguments:

  • tab Tab to parse out
  • --tab NAME To handle several tabs, we ask the user to flag them separately
  • --league NAME If the user wants to not use their last characters league
  • --account NAME If the user wants to look at a different account
  • -v Give varrying levels of verbosity
  • --rich Give a rich embedded details of the items
  • --top N List of top N items/stacks
  • -r/--recent N Tab must be updated within N hours to be valid.

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.