Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 31 additions & 31 deletions PokeAlarm/Alarms/Discord/DiscordAlarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import requests

# 3rd Party Imports

import itertools
# Local Imports
from PokeAlarm.Alarms import Alarm
from PokeAlarm.Utils import parse_boolean, get_static_map_url, \
Expand All @@ -24,7 +24,7 @@
class DiscordAlarm(Alarm):

_defaults = {
'pokemon': {
'monsters': {
'username': "<mon_name>",
'content': "",
'icon_url': get_image_url(
Expand All @@ -35,7 +35,7 @@ class DiscordAlarm(Alarm):
'url': "<gmaps>",
'body': "Available until <24h_time> (<time_left>)."
},
'pokestop': {
'stops': {
'username': "Pokestop",
'content': "",
'icon_url': get_image_url("regular/stop/ready.png"),
Expand All @@ -44,7 +44,7 @@ class DiscordAlarm(Alarm):
'url': "<gmaps>",
'body': "Lure will expire at <24h_time> (<time_left>)."
},
'gym': {
'gyms': {
'username': "<new_team> Gym Alerts",
'content': "",
'icon_url': get_image_url("regular/gyms/<new_team_id>.png"),
Expand All @@ -53,7 +53,7 @@ class DiscordAlarm(Alarm):
'url': "<gmaps>",
'body': "It is now controlled by <new_team>."
},
'egg': {
'eggs': {
'username': "Egg",
'content': "",
'icon_url': get_image_url("regular/eggs/<egg_lvl>.png"),
Expand All @@ -63,7 +63,7 @@ class DiscordAlarm(Alarm):
'body': "A level <egg_lvl> raid will hatch at "
"<24h_hatch_time> (<hatch_time_left>)."
},
'raid': {
'raids': {
'username': "Raid",
'content': "",
'icon_url': get_image_url("regular/monsters/<mon_id_3>_000.png"),
Expand Down Expand Up @@ -92,8 +92,7 @@ class DiscordAlarm(Alarm):
# Gather settings and create alarm
def __init__(self, settings, max_attempts, static_map_key):
# Required Parameters
self.__webhook_url = require_and_remove_key(
'webhook_url', settings, "'Discord' type alarms.")
self.__webhook_url = "https://discordapp.com/api/webhooks/<channel_id>"
self.__max_attempts = max_attempts

# Optional Alarm Parameters
Expand All @@ -103,20 +102,19 @@ def __init__(self, settings, max_attempts, static_map_key):
settings.pop('disable_embed', "False"))
self.__avatar_url = settings.pop('avatar_url', "")
self.__map = settings.pop('map', {})
self.__static_map_key = static_map_key
self.__static_map_key = itertools.cycle(static_map_key)

# Set Alert Parameters
self.__pokemon = self.create_alert_settings(
settings.pop('pokemon', {}), self._defaults['pokemon'], 'pokemon')
self.__pokestop = self.create_alert_settings(
settings.pop('pokestop', {}),
self._defaults['pokestop'], 'pokestop')
self.__gym = self.create_alert_settings(
settings.pop('gym', {}), self._defaults['gym'], 'gym')
self.__egg = self.create_alert_settings(
settings.pop('egg', {}), self._defaults['egg'], 'egg')
self.__raid = self.create_alert_settings(
settings.pop('raid', {}), self._defaults['raid'], 'raid')
self.__monsters = self.create_alert_settings(
settings.pop('monsters', {}), self._defaults['monsters'], 'monsters')
self.__stops = self.create_alert_settings(
settings.pop('stops', {}), self._defaults['stops'], 'stops')
self.__gyms = self.create_alert_settings(
settings.pop('gyms', {}), self._defaults['gyms'], 'gyms')
self.__eggs = self.create_alert_settings(
settings.pop('eggs', {}), self._defaults['eggs'], 'eggs')
self.__raids = self.create_alert_settings(
settings.pop('raids', {}), self._defaults['raids'], 'raids')
self.__weather = self.create_alert_settings(
settings.pop('weather', {}), self._defaults['weather'], 'weather')

Expand Down Expand Up @@ -147,10 +145,10 @@ def startup_message(self):
def create_alert_settings(self, settings, default, kind):
if kind == 'weather':
static_map = get_static_weather_map_url(
settings.pop('map', self.__map), self.__static_map_key)
settings.pop('map', self.__map), next(self.__static_map_key))
else:
static_map = get_static_map_url(
settings.pop('map', self.__map), self.__static_map_key)
settings.pop('map', self.__map), next(self.__static_map_key))
alert = {
'webhook_url': settings.pop('webhook_url', self.__webhook_url),
'username': settings.pop('username', default['username']),
Expand Down Expand Up @@ -186,7 +184,7 @@ def send_alert(self, alert, info):
}]
if alert['map'] is not None:
if info.get('alert_type') == 'weather':
coords = {
map_info = {
'lat1': info['coords'][0][0],
'lng1': info['coords'][0][1],
'lat2': info['coords'][1][0],
Expand All @@ -195,14 +193,16 @@ def send_alert(self, alert, info):
'lng3': info['coords'][2][1],
'lat4': info['coords'][3][0],
'lng4': info['coords'][3][1],
'gkey': next(self.__static_map_key),
}
else:
coords = {
map_info = {
'lat': info['lat'],
'lng': info['lng']
'lng': info['lng'],
'gkey': next(self.__static_map_key),
}
payload['embeds'][0]['image'] = {
'url': replace(alert['map'], coords)
'url': replace(alert['map'], map_info)
}
args = {
'url': replace(alert['webhook_url'], info),
Expand All @@ -214,24 +214,24 @@ def send_alert(self, alert, info):
# Trigger an alert based on Pokemon info
def pokemon_alert(self, pokemon_info):
log.debug("Pokemon notification triggered.")
self.send_alert(self.__pokemon, pokemon_info)
self.send_alert(self.__monsters, pokemon_info)

# Trigger an alert based on Pokestop info
def pokestop_alert(self, pokestop_info):
log.debug("Pokestop notification triggered.")
self.send_alert(self.__pokestop, pokestop_info)
self.send_alert(self.__stops, pokestop_info)

# Trigger an alert based on Pokestop info
def gym_alert(self, gym_info):
log.debug("Gym notification triggered.")
self.send_alert(self.__gym, gym_info)
self.send_alert(self.__gyms, gym_info)

# Trigger an alert when a raid egg has spawned (UPCOMING raid event)
def raid_egg_alert(self, raid_info):
self.send_alert(self.__egg, raid_info)
self.send_alert(self.__eggs, raid_info)

def raid_alert(self, raid_info):
self.send_alert(self.__raid, raid_info)
self.send_alert(self.__raids, raid_info)

def weather_alert(self, weather_info):
log.debug("Weather notification triggered.")
Expand Down
40 changes: 20 additions & 20 deletions PokeAlarm/Alarms/FacebookPage/FacebookPageAlarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
class FacebookPageAlarm(Alarm):

_defaults = {
'pokemon': {
'monsters': {
'message': "A wild <mon_name> has appeared!",
'image': get_image_url(
"regular/monsters/<mon_id_3>_<form_id_3>.png"),
Expand All @@ -34,23 +34,23 @@ class FacebookPageAlarm(Alarm):
'description': "Available until <24h_time> (<time_left>).",
'caption': None
},
'pokestop': {
'stops': {
'message': "Someone has placed a lure on a Pokestop!",
'image': get_image_url("regular/stop/ready.png"),
'link': "<gmaps>",
'name': "Lured Pokestop",
'description': "Lure will expire at <24h_time> (<time_left>).",
'caption': None
},
'gym': {
'gyms': {
'message': "A Team <old_team> gym has fallen!",
'image': get_image_url("regular/gyms/<new_team_id>.png"),
'link': "<gmaps>",
'name': "<old_team> gym fallen",
'description': "It is now controlled by <new_team>.",
'caption': None
},
'egg': {
'eggs': {
'message': "A level <egg_lvl> raid is upcoming!",
'image': get_image_url("regular/eggs/<egg_lvl>.png"),
'link': "<gmaps>",
Expand All @@ -59,7 +59,7 @@ class FacebookPageAlarm(Alarm):
"<24h_hatch_time> (<hatch_time_left>).",
'caption': None
},
'raid': {
'raids': {
'message': "Level <raid_lvl> raid available against <mon_name>!",
'image': get_image_url(
"regular/monsters/<mon_id_3>_000.png"),
Expand All @@ -84,16 +84,16 @@ def __init__(self, settings):
settings.pop('startup_message', "True"))

# Set Alerts
self.__pokemon = self.create_alert_settings(
settings.pop('pokemon', {}), self._defaults['pokemon'])
self.__pokestop = self.create_alert_settings(
settings.pop('pokestop', {}), self._defaults['pokestop'])
self.__gym = self.create_alert_settings(
settings.pop('gym', {}), self._defaults['gym'])
self.__egg = self.create_alert_settings(
settings.pop('egg', {}), self._defaults['egg'])
self.__raid = self.create_alert_settings(
settings.pop('raid', {}), self._defaults['raid'])
self.__monsters = self.create_alert_settings(
settings.pop('monsters', {}), self._defaults['monsters'])
self.__stops = self.create_alert_settings(
settings.pop('stops', {}), self._defaults['stops'])
self.__gyms = self.create_alert_settings(
settings.pop('gyms', {}), self._defaults['gyms'])
self.__eggs = self.create_alert_settings(
settings.pop('eggs', {}), self._defaults['eggs'])
self.__raids = self.create_alert_settings(
settings.pop('raids', {}), self._defaults['raids'])

# Warn user about leftover parameters
reject_leftover_parameters(
Expand Down Expand Up @@ -145,23 +145,23 @@ def send_alert(self, alert, info):

# Trigger an alert based on Pokemon info
def pokemon_alert(self, pokemon_info):
self.send_alert(self.__pokemon, pokemon_info)
self.send_alert(self.__monsters, pokemon_info)

# Trigger an alert based on Pokestop info
def pokestop_alert(self, pokestop_info):
self.send_alert(self.__pokestop, pokestop_info)
self.send_alert(self.__stops, pokestop_info)

# Trigger an alert based on Gym info
def gym_alert(self, gym_info):
self.send_alert(self.__gym, gym_info)
self.send_alert(self.__gyms, gym_info)

# Trigger an alert when a raid egg has spawned (UPCOMING raid event)
def raid_egg_alert(self, raid_info):
self.send_alert(self.__egg, raid_info)
self.send_alert(self.__eggs, raid_info)

# Trigger an alert based on Raid info
def raid_alert(self, raid_info):
self.send_alert(self.__raid, raid_info)
self.send_alert(self.__raids, raid_info)

# Sends a wall post to Facebook
def post_to_wall(self, message, attachment=None):
Expand Down
20 changes: 10 additions & 10 deletions PokeAlarm/Alarms/Pushbullet/PushBulletAlarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,27 @@

class PushbulletAlarm(Alarm):
_defaults = {
'pokemon': {
'monsters': {
'title': "A wild <mon_name> has appeared!",
'url': "<gmaps>",
'body': "Available until <24h_time> (<time_left>)."
},
'pokestop': {
'stops': {
'title': "Someone has placed a lure on a Pokestop!",
'url': "<gmaps>",
'body': "Lure will expire at <24h_time> (<time_left>)."
},
'gym': {
'gyms': {
'title': "A Team <old_team> gym has fallen!",
'url': "<gmaps>",
'body': "It is now controlled by <new_team>."
},
'egg': {
'eggs': {
'title': "A level <egg_lvl> raid is incoming!",
'url': "<gmaps>",
'body': "The egg will hatch <24h_hatch_time> (<hatch_time_left>)."
},
'raid': {
'raids': {
'title': "Level <raid_lvl> raid is available against <mon_name>!",
'url': "<gmaps>",
'body': "The raid is available until <24h_raid_end>"
Expand All @@ -66,15 +66,15 @@ def __init__(self, settings):

# Optional Alert Parameters
self.__pokemon = self.create_alert_settings(
settings.pop('pokemon', {}), self._defaults['pokemon'])
settings.pop('monsters', {}), self._defaults['monsters'])
self.__pokestop = self.create_alert_settings(
settings.pop('pokestop', {}), self._defaults['pokestop'])
settings.pop('stops', {}), self._defaults['stops'])
self.__gym = self.create_alert_settings(
settings.pop('gyms', {}), self._defaults['gym'])
settings.pop('gyms', {}), self._defaults['gyms'])
self.__egg = self.create_alert_settings(
settings.pop('egg', {}), self._defaults['egg'])
settings.pop('eggs', {}), self._defaults['eggs'])
self.__raid = self.create_alert_settings(
settings.pop('raid', {}), self._defaults['raid'])
settings.pop('raids', {}), self._defaults['raids'])

# Warn user about leftover parameters
reject_leftover_parameters(
Expand Down
20 changes: 10 additions & 10 deletions PokeAlarm/Alarms/Slack/SlackAlarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,36 +25,36 @@
class SlackAlarm(Alarm):

_defaults = {
'pokemon': {
'monsters': {
'username': "<mon_name>",
'icon_url': get_image_url(
"regular/monsters/<mon_id_3>_<form_id_3>.png"),
'title': "A wild <mon_name> has appeared!",
'url': "<gmaps>",
'body': "Available until <24h_time> (<time_left>)."
},
'pokestop': {
'stops': {
'username': "Pokestop",
'icon_url': get_image_url("regular/stop/ready.png"),
'title': "Someone has placed a lure on a Pokestop!",
'url': "<gmaps>",
'body': "Lure will expire at <24h_time> (<time_left>)."
},
'gym': {
'gyms': {
'username': "<new_team> Gym Alerts",
'icon_url': get_image_url("regular/gyms/<new_team_id>.png"),
'title': "A Team <old_team> gym has fallen!",
'url': "<gmaps>",
'body': "It is now controlled by <new_team>."
},
'egg': {
'eggs': {
'username': "Egg",
'icon_url': get_image_url("regular/eggs/<egg_lvl>.png"),
'title': "A level <egg_lvl> raid is incoming!",
'url': "<gmaps>",
'body': "The egg will hatch <24h_hatch_time> (<hatch_time_left>)."
},
'raid': {
'raids': {
'username': "<mon_name> Raid",
'icon_url': get_image_url(
"regular/monsters/<mon_id_3>_000.png"),
Expand Down Expand Up @@ -83,15 +83,15 @@ def __init__(self, settings, static_map_key):

# Optional Alert Parameters
self.__pokemon = self.create_alert_settings(
settings.pop('pokemon', {}), self._defaults['pokemon'])
settings.pop('monsters', {}), self._defaults['monsters'])
self.__pokestop = self.create_alert_settings(
settings.pop('pokestop', {}), self._defaults['pokestop'])
settings.pop('stops', {}), self._defaults['stops'])
self.__gym = self.create_alert_settings(
settings.pop('gym', {}), self._defaults['gym'])
settings.pop('gyms', {}), self._defaults['gyms'])
self.__egg = self.create_alert_settings(
settings.pop('egg', {}), self._defaults['egg'])
settings.pop('eggs', {}), self._defaults['eggs'])
self.__raid = self.create_alert_settings(
settings.pop('raid', {}), self._defaults['raid'])
settings.pop('raids', {}), self._defaults['raids'])

# Warn user about leftover parameters
reject_leftover_parameters(settings, "'Alarm level in Slack alarm.")
Expand Down
Loading