В предоставленном коде Python есть несколько потенциальных проблем:
Необработанное исключение: Если пользователь введет неправильный пароль, код не обработает исключение VRChatAPIError
. Это может привести к неожиданному завершению программы. Рекомендуется добавить блок try... except
для обработки исключений и предоставления понятного сообщения об ошибке пользователю.
Использование устаревшего API: Используемый API vrchat_api
устарел. Рекомендуется использовать более новую версию, например vrchatapi
или vrchat
. Это обеспечит поддержку последних функций и обновлений безопасности.
Ошибки форматирования строк: В строке s = "{:20} blcoked me at {} ...".format( m.targetDisplayName, m.created )
допущена опечатка: blcoked
вместо blocked
.
Избыточный код: Фильтрация списка unblockModerations
по m.targetDisplayName
является избыточной, поскольку m
уже представляет собой блокировку с m.targetDisplayName
.
Улучшенный код с учетом этих исправлений:
#!/usr/bin/env python3
from getpass import getpass
from vrchatapi import VRChatAPI
from vrchatapi.enum import ModerationType
"""
Show a list of users who have blocked you.
"""
# Use a try/except block to handle potential errors
try:
# Get the user's credentials
username = getpass("VRChat Username: ")
password = getpass()
# Authenticate with the API
api = VRChatAPI(username, password)
api.authenticate()
# Get the list of moderations
moderations = api.get_moderations()
# Filter the moderations to find blocks
block_moderations = list(filter(lambda x: x.type == ModerationType.BLOCK, moderations))
# Print the list of blocked users
for block in block_moderations:
# Check if the user has been unblocked
unblocks = list(filter(lambda x: x.target_display_name == block.target_display_name, moderations))
unblock = None if len(unblocks) == 0 else unblocks[-1]
if unblock and unblock.created > block.created:
print(f"{block.target_display_name} blocked me at {block.created} but unblocked at {unblock.created}")
else:
print(f"{block.target_display_name} blocked me at {block.created}")
# Handle any exceptions that may occur
except VRChatAPIError as e:
print("An error occurred:", e)
#!/usr/bin/env python3
from getpass import getpass
from vrchatapi import VRChatAPI
from vrchatapi.enum import ModerationType
"""
Show a list of users who have blocked you.
"""
# Use a try/except block to handle potential errors
try:
# Get the user's credentials
username = getpass("VRChat Username: ")
password = getpass()
# Authenticate with the API
api = VRChatAPI(username, password)
api.authenticate()
# Get the list of moderations
moderations = api.get_moderations()
# Filter the moderations to find blocks
block_moderations = list(filter(lambda x: x.type == ModerationType.BLOCK, moderations))
# Print the list of blocked users
for block in block_moderations:
# Check if the user has been unblocked
unblocks = list(filter(lambda x: x.target_display_name == block.target_display_name, moderations))
unblock = None if len(unblocks) == 0 else unblocks[-1]
if unblock and unblock.created > block.created:
print(f"{block.target_display_name} blocked me at {block.created} but unblocked at {unblock.created}")
else:
print(f"{block.target_display_name} blocked me at {block.created}")
# Handle any exceptions that may occur
except VRChatAPIError as e:
print("An error occurred:", e)