request error handling, .alerts works in non-warframe channels
This commit is contained in:
parent
4c5fc3d98b
commit
6696c15152
21
warbot.py
21
warbot.py
|
@ -73,10 +73,12 @@ class WarBot(irc.IRCClient):
|
|||
stop.wait(60)
|
||||
|
||||
|
||||
def checkNewAlerts(self):
|
||||
def checkNewAlerts(self, channel=None):
|
||||
"""
|
||||
Checks the world state for new alerts or invasions.
|
||||
"""
|
||||
if not channel:
|
||||
channel = self.channel
|
||||
while not self.stillConnected(): # startup reasons
|
||||
time.sleep(1)
|
||||
|
||||
|
@ -84,7 +86,11 @@ class WarBot(irc.IRCClient):
|
|||
res = requests.get(URI)
|
||||
res.raise_for_status()
|
||||
except requests.exceptions.ConnectionError:
|
||||
return
|
||||
return self.msg(channel, f"Connection Error")
|
||||
except requests.exceptions.HTTPError:
|
||||
return self.msg(channel, f"HTTP Error: {res.status_code}")
|
||||
except Exception as e:
|
||||
return self.msg(channel, f"Error: {e}")
|
||||
data = res.json()
|
||||
|
||||
alert_ids = [alert["_id"]["$oid"] for alert in data["Alerts"]]
|
||||
|
@ -93,14 +99,14 @@ class WarBot(irc.IRCClient):
|
|||
self.alert_ids += new_alerts
|
||||
for alert in data["Alerts"]:
|
||||
if alert["_id"]["$oid"] in new_alerts:
|
||||
self.process_alert(alert)
|
||||
self.process_alert(alert, channel)
|
||||
|
||||
expired_alerts = [a for a in self.alert_ids if a not in alert_ids]
|
||||
for alert_id in expired_alerts:
|
||||
self.alert_ids.remove(alert_id)
|
||||
|
||||
|
||||
def process_alert(self, alert):
|
||||
def process_alert(self, alert, channel):
|
||||
"""
|
||||
Processes the provided alert and sends a message to channel.
|
||||
"""
|
||||
|
@ -143,7 +149,7 @@ class WarBot(irc.IRCClient):
|
|||
if items:
|
||||
message += f" | \x0310Items: \x0312{', '.join(items)}\x03"
|
||||
|
||||
self.msg(self.channel, message)
|
||||
self.msg(channel, message)
|
||||
|
||||
|
||||
def privmsg(self, user, channel, message):
|
||||
|
@ -151,7 +157,10 @@ class WarBot(irc.IRCClient):
|
|||
Called when the bot receives a PRIVMSG, which can come from channels
|
||||
or users alike.
|
||||
"""
|
||||
pass
|
||||
if message == ".alerts":
|
||||
self.alert_ids = []
|
||||
self.checkNewAlerts(channel)
|
||||
return
|
||||
|
||||
|
||||
def joined(self, channel):
|
||||
|
|
Loading…
Reference in New Issue
Block a user