mirror of
				https://github.com/LiteyukiStudio/LiteyukiBot.git
				synced 2025-11-04 05:16:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import nonebot
 | 
						|
 | 
						|
from nonebot.adapters import satori
 | 
						|
from nonebot.adapters.satori.models import User
 | 
						|
 | 
						|
 | 
						|
class UserInfo:
 | 
						|
    user_infos: dict = {}
 | 
						|
 | 
						|
    async def load_friends(self, bot: satori.Bot):
 | 
						|
        nonebot.logger.info("Update user info from friends")
 | 
						|
        friend_response = await bot.friend_list()
 | 
						|
        while friend_response.next is not None:
 | 
						|
            for i in friend_response.data:
 | 
						|
                i: User = i
 | 
						|
                self.user_infos[str(i.id)] = i
 | 
						|
            friend_response = await bot.friend_list(next_token=friend_response.next)
 | 
						|
 | 
						|
        for i in friend_response.data:
 | 
						|
            i: User = i
 | 
						|
            self.user_infos[str(i.id)] = i
 | 
						|
 | 
						|
        nonebot.logger.info("Finish update user info")
 | 
						|
 | 
						|
    async def get(self, uid: int | str) -> User | None:
 | 
						|
        try:
 | 
						|
            return self.user_infos[str(uid)]
 | 
						|
        except KeyError:
 | 
						|
            return None
 | 
						|
 | 
						|
    async def put(self, user: User) -> bool:
 | 
						|
        """
 | 
						|
        向用户信息数据库中添加/修改一项,返回值仅代表数据是否变更,不代表操作是否成功
 | 
						|
        Args:
 | 
						|
            user: 要加入数据库的用户
 | 
						|
 | 
						|
        Returns: 当数据库中用户信息发生变化时返回 True, 否则返回 False
 | 
						|
 | 
						|
        """
 | 
						|
        try:
 | 
						|
            old_user: User = self.user_infos[str(user.id)]
 | 
						|
            attr_edited = False
 | 
						|
            if user.name is not None:
 | 
						|
                if old_user.name != user.name:
 | 
						|
                    attr_edited = True
 | 
						|
                    self.user_infos[str(user.id)].name = user.name
 | 
						|
            if user.nick is not None:
 | 
						|
                if old_user.nick != user.nick:
 | 
						|
                    attr_edited = True
 | 
						|
                    self.user_infos[str(user.id)].nick = user.nick
 | 
						|
            if user.avatar is not None:
 | 
						|
                if old_user.avatar != user.avatar:
 | 
						|
                    attr_edited = True
 | 
						|
                    self.user_infos[str(user.id)].avatar = user.avatar
 | 
						|
            return attr_edited
 | 
						|
        except KeyError:
 | 
						|
            self.user_infos[str(user.id)] = user
 | 
						|
            return True
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        pass
 | 
						|
 | 
						|
 | 
						|
user_infos = UserInfo()
 |