jmurrayufo / poe_tracker Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
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.
Track item sales
Specifically track suspected currency sales over time.
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.
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:
Types we can handle:
db.sales.<class>
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)
Pull data from the trade API and store it into the mongoDB.
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
Show you lost X
amount of XP
Handle the following errors in the _get
functions
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.
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'
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```
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.A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.