Browse Source

fixed SteamFriends bugs

* __contains__/__get__ now work with int,SteamID,SteamUser
* use six to handle py2,3 compatibility
pull/50/head
Rossen Georgiev 9 years ago
parent
commit
bce03d6a1a
  1. 14
      steam/client/builtins/friends.py

14
steam/client/builtins/friends.py

@ -1,9 +1,11 @@
import logging
from six import itervalues
from eventemitter import EventEmitter
from steam.steamid import SteamID, intBase
from steam.enums import EResult, EFriendRelationship
from steam.enums.emsg import EMsg
from steam.core.msg import MsgProto
from steam.client.user import SteamUser
class Friends(object):
@ -92,7 +94,7 @@ class SteamFriendlist(EventEmitter):
rel = EFriendRelationship(friend.efriendrelationship)
if steamid not in self._fr:
self._fr[suser] = suser
self._fr[steamid] = suser
suser.relationship = rel
steamids_to_check.add(steamid)
@ -103,7 +105,7 @@ class SteamFriendlist(EventEmitter):
oldrel, suser.relationship = suser.relationship, rel
if rel == EFriendRelationship.No:
self.emit(self.EVENT_FRIEND_REMOVED, self._fr.pop(suder))
self.emit(self.EVENT_FRIEND_REMOVED, self._fr.pop(steamid))
elif oldrel in (2,4) and rel == EFriendRelationship.Friend:
self.emit(self.EVENT_FRIEND_NEW, suser)
@ -125,15 +127,19 @@ class SteamFriendlist(EventEmitter):
return len(self._fr)
def __iter__(self):
return iter(self._fr)
return itervalues(self._fr)
def __list__(self):
return list(self._fr)
return list(iter(self))
def __getitem__(self, key):
if isinstance(key, SteamUser):
key = key.steam_id
return self._fr[key]
def __contains__(self, friend):
if isinstance(friend, SteamUser):
friend = friend.steam_id
return friend in self._fr
def add(self, steamid_or_accountname_or_email):

Loading…
Cancel
Save