Git Product home page Git Product logo

poe-trade-telegram-notifier's Introduction

PoE Trade Telegram Notifier

  • 📱 Productivity. Every trade offer you receive is forwarded to you in Telegram
  • 🛡️ Safety. Application doesn't inject anything in Path of Exile, thus you won't be banned
  • 🏃 Flexibility. You can reply to every trade offer via Telegram messenger just by replying to received message!

Demonstration video:

poe-trade-notifier-demo.mp4

Why

In Path of Exile, the lack of an auction system complicates trading, requiring players to monitor trade offers near their PC. This application solves a key issue: when away from their PC, players can receive PoE whisper messages on their Telegram account. This allows them to view and respond to trade offers instantly via Telegram, avoiding interruptions like being pulled away from TikTok for low-value trades (every PoE player knows 1c trading is unproductive).

How it works

Application constantly observes log file of Path of Exile located in Path of Exile/logs/Client.txt. If there is Whisper message, it instantly forwards to Telegram Channel.

To get replies to messages in the Telegram Channel, application constantly polls Telegram API for getting updates of a bot.

How to install

Prerequisites

  1. System: Windows, MacOS not tested
  2. Python >= 3.8. You can download Python here: https://www.python.org/downloads/

Running application

  1. Open project directory and open terminal in this directory.
  2. Run the command to create venv:
    python -m venv .venv
  3. Activate the venv:
    .venv\Scripts\activate.bat
  4. Install project dependencies:
    pip install -r requirements.txt
  5. IMPORTANT: make sure you configured your config.ini (read section below) according to your prefs.
  6. Run the application:
    python main.py

Configuring config.ini

Required fields - mandatory for running the application

Field Type Required Description
TelegramBotId string Yes Create telegram bot which will notify you about all incoming whispers. You can use BotFather for creating one, it is simple stupid. Obtain created bot token. You can do that in the BotFather. The bot token usually have the following pattern: 181283218:BBFRF5r-2Q2fSofZV-wQOFXKX6UIsd_GTtl
TelegramUserId string Yes Obtain your telegram id. You can do that using GetMyId bot
LogPath string Yes Your Path of Exile logging directory. Typically, it is located in the steam/steamapps/Path of Exile/logs/Client.txt for Windows and in /Users/{username}/Library/Caches/com.GGG.PathOfExile/Logs/Client.txt for MacOS

Other fields

Field Type Required Description
ObserverCooldownSecs float No (default is 2.0) Interval between log reads. You can set it to lower value in order to get notifications as fast as it's possible (it is bound to our operating system)
TelegramPollingCooldownSecs float No (default is 1.0) Interval between requests to Telegram API for getting reply messages.

IMPORTANT: it is recommended to not override this variable, do that only if you know what are you doing.

Development

Future requests:

  • TBD: Filter for stashes
  • TBD: Filter for currency

License

© Rolan Ibragimov (phen0menon) 2024. Licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License.

poe-trade-telegram-notifier's People

Contributors

phen0menon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

mr-p4nda

poe-trade-telegram-notifier's Issues

Reply not working

Love the program! Works really well but can't get the reply to work properly. Anytime I reply within Telegram (right-click -> reply), nothing comes through into POE. Have you experienced this?

Hello I am new and I need help

I have set up the config but I do not understand the next part.

after filling the config.ini with your values, run the Python process:

$ python3 main.py

Do I need to install Python and run the above command?

Clan Names

for a brief moment the reply started to work for me. However, when testing it couldn't reply to users that had a clan name.

e.g.

From <MoH©> 相も変わらずお人好しで格好つけてばかりだね:

def extract_name_from_whisper(whisper: str) -> str:
parts = whisper.split(":")
if len(parts) > 1:
name = parts[0].split()[1].strip()
return name
return whisper

Looks like it can extract either the username or the clan name, but can't differentiate between the two. This causes whispers to people with clan names to fail (because the whisper is trying to @, rather than @username).

in the above example, the username extracted was <MoH©> and when attempting to reply, it would try to whisper @<MoH©> rather than 相も変わらずお人好しで格好つけてばかりだね

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.