First commit
This commit is contained in:
commit
a33a8fbc55
103
main.py
Normal file
103
main.py
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
import telepot
|
||||||
|
import requests
|
||||||
|
import traceback
|
||||||
|
from pathlib import Path
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
try:
|
||||||
|
API_TOKEN = os.environ["TELEGRAM_API_TOKEN"]
|
||||||
|
except KeyError:
|
||||||
|
print("TELEGRAM_API_TOKEN enviroment variable is not set.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
CONFIG_FILE = os.environ.get("CONFIG_FILE", "./arti_server_bot.json")
|
||||||
|
config_file = Path(CONFIG_FILE)
|
||||||
|
|
||||||
|
users = {}
|
||||||
|
package_history = {}
|
||||||
|
if config_file.exists():
|
||||||
|
conf = {}
|
||||||
|
try:
|
||||||
|
conf = json.loads(config_file.open().read())
|
||||||
|
except json.decoder.JSONDecodeError as err:
|
||||||
|
traceback.print_exc()
|
||||||
|
print("Loading config file failed")
|
||||||
|
|
||||||
|
users = conf.get("users", {})
|
||||||
|
|
||||||
|
|
||||||
|
def write_config():
|
||||||
|
with config_file.open("w") as f:
|
||||||
|
conf = {"users": users}
|
||||||
|
f.write(json.dumps(conf, indent=4))
|
||||||
|
|
||||||
|
TRACKING_URL = "https://gls-group.eu/app/service/open/rest/EU/en/rstt001?match="
|
||||||
|
STEAM_CONTROLLER_TRACKING_ID = "52650089530801"
|
||||||
|
|
||||||
|
bot = telepot.Bot(API_TOKEN)
|
||||||
|
|
||||||
|
|
||||||
|
def on_message(msg):
|
||||||
|
content_type, chat_type, chat_id = telepot.glance(msg)
|
||||||
|
chat_id = str(chat_id)
|
||||||
|
print(content_type, chat_type, chat_id, msg["from"]["username"], msg["text"])
|
||||||
|
if content_type == "text" and chat_type == "private":
|
||||||
|
if msg["text"] == "/start":
|
||||||
|
if msg["from"]["username"] == "artizirk":
|
||||||
|
bot.sendMessage(chat_id, "Hello master")
|
||||||
|
if chat_id not in users:
|
||||||
|
bot.sendMessage(chat_id, "Saving you")
|
||||||
|
users[chat_id] = msg["from"]
|
||||||
|
write_config()
|
||||||
|
else:
|
||||||
|
bot.sendMessage(chat_id, "Your chat_id already saved")
|
||||||
|
else:
|
||||||
|
bot.sendMessage(chat_id,
|
||||||
|
"Hello {}".format(msg["from"]["first_name"]))
|
||||||
|
elif msg["text"] == "/users":
|
||||||
|
reply = "Current users are:```{}```"
|
||||||
|
pretty_users = pprint.pformat(users, indent=4)
|
||||||
|
bot.sendMessage(chat_id, reply.format(pretty_users),
|
||||||
|
parse_mode="Markdown")
|
||||||
|
else:
|
||||||
|
bot.sendMessage(chat_id, "No idea what you just said")
|
||||||
|
else:
|
||||||
|
reply = "I'm sorry {}, I'm afraid I cant't do that."
|
||||||
|
name = msg["from"].get("first_name")
|
||||||
|
if not name:
|
||||||
|
name = msg["from"].get("username", "Dave")
|
||||||
|
bot.sendMessage(chat_id, reply.format(name))
|
||||||
|
|
||||||
|
bot.message_loop(on_message)
|
||||||
|
print("Listening ...")
|
||||||
|
|
||||||
|
|
||||||
|
def parse_delivery_history(resp):
|
||||||
|
history = resp["tuStatus"][0]["history"]
|
||||||
|
for event in history:
|
||||||
|
event["datetime"] = event["date"] + " " + event["time"]
|
||||||
|
del event["date"]
|
||||||
|
del event["time"]
|
||||||
|
yield event
|
||||||
|
|
||||||
|
msg_template = "Steam controller status update from:\n`{} ({}) at {}`\n{}"
|
||||||
|
while True:
|
||||||
|
resp = requests.get(TRACKING_URL+STEAM_CONTROLLER_TRACKING_ID)
|
||||||
|
history = list(parse_delivery_history(resp.json()))[::-1]
|
||||||
|
|
||||||
|
for event in history:
|
||||||
|
if event["datetime"] not in package_history:
|
||||||
|
package_history[event["datetime"]] = event
|
||||||
|
msg = msg_template.format(
|
||||||
|
event["address"]["countryName"],
|
||||||
|
event["address"]["city"],
|
||||||
|
event["datetime"],
|
||||||
|
event["evtDscr"]
|
||||||
|
)
|
||||||
|
for user in users:
|
||||||
|
bot.sendMessage(user, msg, parse_mode="Markdown")
|
||||||
|
time.sleep(60)
|
8
requirements.txt
Normal file
8
requirements.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
aiohttp==1.2.0
|
||||||
|
async-timeout==1.1.0
|
||||||
|
chardet==2.3.0
|
||||||
|
multidict==2.1.4
|
||||||
|
requests==2.12.4
|
||||||
|
telepot==10.4
|
||||||
|
urllib3==1.19.1
|
||||||
|
yarl==0.8.1
|
Loading…
Reference in New Issue
Block a user