Send login notification with location information
This commit is contained in:
parent
262121d236
commit
a73faf0161
1 changed files with 41 additions and 4 deletions
|
|
@ -11,13 +11,16 @@ creation commands.
|
|||
from datetime import datetime, timedelta
|
||||
from re import match, compile, sub
|
||||
|
||||
import requests
|
||||
|
||||
from evennia.commands.command import InterruptCommand
|
||||
from evennia.contrib.game_systems.gendersub import GenderCharacter
|
||||
from evennia.contrib.rpg.rpsystem import ContribRPCharacter, send_emote
|
||||
from evennia.prototypes.spawner import spawn
|
||||
from evennia.utils import delay, logger, int2str
|
||||
from evennia.utils.search import (search_object, search_account,
|
||||
search_objects_by_typeclass)
|
||||
search_objects_by_typeclass,
|
||||
search_channel)
|
||||
|
||||
from utils.word_list import routput, choices, fix_msg
|
||||
from typeclasses.objects import Object, ObjectParent
|
||||
|
|
@ -130,9 +133,9 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
self.db.thrown_times = 0
|
||||
self.db.knocker_conversation_state = None
|
||||
self.ndb.cozy_house_number_of_bookshelves = 0
|
||||
self.db.received_pipe=False
|
||||
self.ndb.assortment_of_jars_view_index=0
|
||||
self.ndb.shelf_full_of_jars_view_index=0
|
||||
self.db.received_pipe = False
|
||||
self.ndb.assortment_of_jars_view_index = 0
|
||||
self.ndb.shelf_full_of_jars_view_index = 0
|
||||
self.db.wee_beastie_friendly_level = 0
|
||||
self.db.big_hairy_beast_friendly_level = 0
|
||||
|
||||
|
|
@ -150,6 +153,21 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
self.delete_inv("typeclasses.drinkables.Cocktail")
|
||||
self.move_to(search_object("mp05").first(), quiet=True, use_destination=True)
|
||||
|
||||
def location_info(self):
|
||||
"""
|
||||
Return string containing location information from IP address.
|
||||
"""
|
||||
ip_address = self.account.sessions.get()[0].address
|
||||
if ip_address == "127.0.0.1":
|
||||
return "(from localhost)"
|
||||
|
||||
response = requests.get(f'https://ipapi.co/{ip_address}/json/',
|
||||
timeout=1).json()
|
||||
city = response.get("city") or "Unknown City"
|
||||
region = response.get("region") or "Unknown Region"
|
||||
country = response.get("country_name") or "Unknown Country"
|
||||
return f"(from {city}, {region}, {country})"
|
||||
|
||||
def at_post_puppet(self, **kwargs):
|
||||
"""
|
||||
Setup the character based for _this world_.
|
||||
|
|
@ -157,6 +175,25 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
New accounts, guest accounts, and those that woke up
|
||||
with a hangover in the bar, need consideration.
|
||||
"""
|
||||
account = self.account
|
||||
player = account.key
|
||||
|
||||
if player not in ("rob", "george", "darol", "rick", "howard"):
|
||||
# Does everyone need to know about people logging in?
|
||||
# pub = search_channel("Public").first()
|
||||
# if pub:
|
||||
# pub.msg(msg)
|
||||
|
||||
name = self.name
|
||||
desc = self.db._sdesc
|
||||
where = self.location_info()
|
||||
msg = f"{name}, the {desc}, played by `{player}`, connected {where}."
|
||||
|
||||
logger.info(msg)
|
||||
# Send an notification about the login:
|
||||
requests.post("https://ntfy.sh/moss-n-puddles-user-login", timeout=2,
|
||||
data=msg.encode(encoding='utf-8'))
|
||||
|
||||
if self.db.guest_account:
|
||||
self.guest_account_setup()
|
||||
elif not self.db.visited:
|
||||
|
|
|
|||
Loading…
Reference in a new issue