summaryrefslogtreecommitdiff
path: root/friends.py
diff options
context:
space:
mode:
authorjomo <github@jomo.tv>2014-07-24 02:12:54 +0200
committerjomo <github@jomo.tv>2014-07-24 02:12:54 +0200
commitbdabfc00542553073af7ebcfcfc1e500a633f516 (patch)
tree5962802ae0fab761c142f3563d140ca35bd86aa0 /friends.py
parent60b523f0d1aff04426a9bcbfe5ed8220677a504d (diff)
clean up friends.py
Diffstat (limited to 'friends.py')
-rw-r--r--friends.py211
1 files changed, 123 insertions, 88 deletions
diff --git a/friends.py b/friends.py
index 9e78795..ec1b89d 100644
--- a/friends.py
+++ b/friends.py
@@ -10,7 +10,7 @@ friend_join_sound = "random.orb"
def fjm(event): # friend join message
player = event.getPlayer()
player_id = uid(player)
- playerlist = ""
+
for onlineplayer in list(server.getOnlinePlayers()):
if player_id in friends.get(uid(onlineplayer), []):
msg(onlineplayer, "&a&l%s &ajoined!" % player.getName())
@@ -25,100 +25,135 @@ def friendmessage(player, message): # sends a message with a prefix
msg(player, "&7[&aFriends&7] " + message)
+def ls(sender):
+ sender_friends = friends.get(uid(sender), False)
+ if sender_friends:
+ friends_string = ""
+ for uuid in sender_friends:
+ friends_string += (retrieve_player(uuid).getName() + ", ")
+ friendmessage(sender, "&aYour friends list: " + friends_string[:len(friends_string)-2])
+ else:
+ friendmessage(sender, "&cYour friends list is empty")
+
+
+def clear(sender):
+ sender_id = uid(sender)
+
+ if friends.get(sender_id, False):
+ for uuid in friends[sender_id]:
+ friendmessage(retrieve_player(uuid), "&c&o%s &cremoved you from their friends list" % stripcolors(sender.getDisplayName()))
+ friends.pop(sender_id)
+ friendmessage(sender, "&aFriends list cleared")
+ save_friends()
+ else:
+ friendmessage(sender, "&cYour friends list is already empty")
+
+
+def add(sender, names):
+ sender_id = uid(sender)
+ added = []
+ notfound = []
+ friendalready = []
+
+ if not sender_id in friends:
+ friends[sender_id] = []
+
+ for name in names:
+ player = server.getOfflinePlayer(name)
+ if played_before(player):
+ player_id = uid(player)
+ not_yourself = player != sender
+
+ if not player_id in friends[sender_id]:
+ if not_yourself:
+ friends[sender_id].append(player_id)
+ added.append(player.getName())
+ friendmessage(player.getPlayer(), "&a&o%s &aadded you to their friends list" % stripcolors(sender.getDisplayName()))
+ else:
+ friendalready.append(player.getName())
+
+ else:
+ notfound.append(name)
+
+ save_friends()
+ if added:
+ friendmessage(sender, "&a&o%s&a added." % ", ".join(added))
+ if notfound:
+ friendmessage(sender, "&c&o%s&c not found." % ", ".join(notfound))
+ if friendalready:
+ friendmessage(sender, "&c&o%s&c is/are already your friend." % ", ".join(friendalready))
+ if not not_yourself:
+ friendmessage(sender, "&cYou can't add yourself to your friends list.")
+
+
+def rem(sender, names):
+ sender_id = uid(sender)
+ removed = []
+ notfound = []
+ notafriend = []
+
+ for name in names:
+ player = server.getOfflinePlayer(name)
+ if played_before(player):
+ player_id = uid(player)
+ if player_id in friends.get(sender_id, []):
+ friends[sender_id].remove(player_id)
+ removed.append(player.getName())
+ friendmessage(player.getPlayer(), "&c&o%s &cremoved you from their friends list" % stripcolors(sender.getDisplayName()))
+ else:
+ notafriend.append(player.getName())
+ else:
+ notfound.append(name)
+
+ save_friends()
+ if removed:
+ friendmessage(sender, "&a&o%s&a removed." % ", ".join(removed))
+ if notfound:
+ friendmessage(sender, "&c&o%s&c not found." % ", ".join(notfound))
+ if notafriend:
+ friendmessage(sender, "&c&o%s&c is/are not in your friends list." % ", ".join(notafriend))
+
+
+def fhelp(sender):
+ friendmessage(sender, "&a&l/friends help")
+ msg(sender, "&a1. /friends &oadd <names...> &6aliases: &o+")
+ msg(sender, "&a2. /friends &orem <names...> &6aliases: &oremove, delete, del, -")
+ msg(sender, "&a3. /friends &oclear &6aliases: &o/")
+ msg(sender, "&a4. /friends &olist &6aliases: &olst, *")
+ msg(sender, "&a5. /friends &ohelp &6aliases: &o?")
+
+
@hook.command("friends")
def on_friend_command(sender, args):
if not is_player(sender):
friendmessage(sender, "&c&lYou can't have friends!")
return True
- sender_id = uid(sender)
- if not args or args[0] in ["list", "lst", "*"]: #/friends list
- sender_friends = friends.get(sender_id, False)
- if sender_friends:
- friends_string = ""
- for uuid in sender_friends:
- friends_string += (retrieve_player(uuid).getName() + ", ")
- friendmessage(sender, "&aYour friends list: " + friends_string[:len(friends_string)-2])
- else:
- friendmessage(sender, "&cYour friends list is empty")
-
- elif args[0] in ["clear", "/"]: #/friends clear
- if friends.get(sender_id, False):
- for uuid in friends[sender_id]:
- friendmessage(retrieve_player(uuid), "&c&o%s &cremoved you from their friends list" % stripcolors(sender.getDisplayName()))
- friends.pop(sender_id)
- friendmessage(sender, "&aFriends list cleared")
- save_friends()
- else:
- friendmessage(sender, "&cYour friends list is already empty")
-
- elif args[0] in ["add", "+"]: #/friends add <names>
- if args[1:]:
- if not sender_id in friends:
- friends[sender_id] = []
- added = ""
- notfound = ""
- friendalready = ""
- for name in args[1:]:
- player = server.getOfflinePlayer(name)
- if played_before(player):
- player_id = uid(player)
- not_yourself = player != sender
- if not player_id in friends[sender_id]:
- if not_yourself:
- friends[sender_id].append(player_id)
- added += (player.getName() + ", ")
- friendmessage(player.getPlayer(), "&a&o%s &aadded you to their friends list" % stripcolors(sender.getDisplayName()))
- else:
- friendalready += (player.getName() + ", ")
- else:
- notfound += (name + ", ")
- save_friends()
- if added != "":
- friendmessage(sender, "&a&o%s&a added." % added[:len(added)-2])
- if notfound != "":
- friendmessage(sender, "&c&o%s&c not found." % notfound[:len(notfound)-2])
- if friendalready != "":
- friendmessage(sender, "&c&o%s&c is/are already your friend." % friendalready[:len(friendalready)-2])
- if not not_yourself:
- friendmessage(sender, "&cYou can't add yourself to your friends list.")
- else:
- friendmessage(sender, "&cUsage: &o/friends + <names...>")
-
- elif args[0] in ["remove", "rem", "delete", "del", "-"]: #/friends remove <names>
- if args[1:]:
- removed = ""
- notfound = ""
- notafriend = ""
- for name in args[1:]:
- player = server.getOfflinePlayer(name)
- if played_before(player):
- player_id = uid(player)
- if player_id in friends.get(sender_id, []):
- friends[sender_id].remove(player_id)
- removed += (player.getName() + ", ")
- friendmessage(player.getPlayer(), "&c&o%s &cremoved you from their friends list" % stripcolors(sender.getDisplayName()))
- else:
- notafriend += (player.getName() + ", ")
- else:
- notfound += (name + ", ")
- save_friends()
- if removed != "":
- friendmessage(sender, "&a&o%s&a removed." % removed[:len(removed)-2])
- if notfound != "":
- friendmessage(sender, "&c&o%s&c not found." % notfound[:len(notfound)-2])
- if notafriend != "":
- friendmessage(sender, "&c&o%s&c is/are not in your friends list." % notafriend[:len(notafriend)-2])
+
+ cmd = args[0] if args else None
+ fargs = args[1:]
+
+ # /friends list
+ if cmd in ["list", "lst", "*"]:
+ ls(sender)
+
+ # /friends clear
+ elif cmd in ["clear", "/"]:
+ clear(sender)
+
+ # /friends add <names>
+ elif cmd in ["add", "+"]:
+ if fargs:
+ add(sender, fargs)
else:
- friendmessage(sender, "&cUsage: &o/friends - <names...>")
+ fhelp(sender)
- elif args[0] in ["help", "?"]: #/friends help
- friendmessage(sender, "&a&l/friends help")
- msg(sender, "&a1. /friends &oadd <names...> &6aliases: &o+")
- msg(sender, "&a2. /friends &orem <names...> &6aliases: &oremove, delete, del, -")
- msg(sender, "&a3. /friends &oclear &6aliases: &o/")
- msg(sender, "&a4. /friends &olist &6aliases: &olst, *")
- msg(sender, "&a5. /friends &ohelp &6aliases: &o?")
+ # /friends remove <names>
+ elif cmd in ["remove", "rem", "delete", "del", "-"]:
+ if fargs:
+ rem(sender, fargs)
+ else:
+ fhelp(sender)
else:
- friendmessage(sender, "&cInvalid syntax. use &o/friends ? &cfor info.")
+ fhelp(sender)
return True \ No newline at end of file