Через pip

pip install arizona-forum-api-async

Из исходного кода

git clone https://github.com/fakelag28/Arizona-Forum-API-Async.git
cd Arizona-Forum-API-Async
pip install -e .

Зависимости

  • Python 3.7+
  • aiohttp
  • beautifulsoup4
  • html
  • typing
  • asyncio

Настройка аутентификации

Получение cookies

  1. Установите расширение Cookie Editor для вашего браузера:
  2. Войдите на форум Arizona RP
  3. Откройте Cookie Editor и найдите следующие cookies:
    • xf_session
    • xf_tfa_trust
    • xf_user

Получение User-Agent

  1. Откройте DevTools в браузере (F12)
  2. Перейдите во вкладку Network
  3. Обновите страницу
  4. Выберите любой запрос
  5. В заголовках запроса найдите User-Agent
Или используйте сервис whatismybrowser.com

Базовое использование

Подключение к API

import asyncio
from arizona_forum_async import ArizonaAPI

# Конфигурация
USER_AGENT = "Mozilla/5.0 ..."  # Ваш User-Agent
COOKIES = {
    "xf_session": "...",  # Значение xf_session
    "xf_tfa_trust": "...", # Значение xf_tfa_trust
    "xf_user": "..."  # Значение xf_user
}

async def main():
    # Создаем экземпляр API
    api = ArizonaAPI(USER_AGENT, COOKIES)
    
    # Подключаемся к форуму
    await api.connect()
    
    try:
        # Получаем информацию о текущем пользователе
        current_user = await api.get_current_member()
        print(f"Авторизован как: {current_user.username}")
        
        # Ваш код здесь
        
    finally:
        # Закрываем соединение
        await api.close()

# Запускаем асинхронную функцию
if __name__ == "__main__":
    asyncio.run(main())

Примеры типичных задач

Работа с пользователями

# Получить информацию о пользователе
member = await api.get_member(123456)
print(f"Пользователь: {member.username}")
print(f"Роли: {member.roles}")
print(f"Сообщений: {member.messages_count}")

# Подписаться на пользователя
await member.follow()

# Добавить в игнор
await member.ignore()

# Отправить сообщение на стену
await member.add_message("<b>Привет!</b>")

Работа с темами

# Создать новую тему
category = await api.get_category(1)
await category.create_thread(
    title="Важная тема",
    message_html="<b>Текст темы</b>",
    discussion_type="discussion",
    watch_thread=True
)

# Получить и отредактировать тему
thread = await api.get_thread(123456)
print(f"Тема: {thread.title}")
await thread.edit("<b>Обновленный текст</b>")

# Ответить в теме
await thread.answer("<b>Мой ответ</b>")

# Подписаться на тему
await thread.watch(email_subscribe=True)

Работа с сообщениями

# Получить сообщение
post = await api.get_post(123456)
print(f"Автор: {post.creator.username}")
print(f"Текст: {post.text_content}")

# Поставить реакцию
await post.react(1)  # 1 = лайк

# Добавить в закладки
await post.bookmark()

# Отредактировать
await post.edit("<b>Новый текст</b>")

Работа с категориями

# Получить категорию
category = await api.get_category(1)
print(f"Раздел: {category.title}")

# Получить темы
threads = await category.get_threads_extended()
for thread in threads:
    print(f"- {thread}")

# Подписаться на категорию
await category.watch(
    notify="thread",
    send_alert=True,
    send_email=False
)

# Отметить прочитанной
await category.set_read()

Обработка ошибок

from arizona_forum_async.exceptions import (
    IncorrectLoginData,
    ThisIsYouError,
    APIError
)

async def main():
    api = ArizonaAPI(USER_AGENT, COOKIES)
    
    try:
        await api.connect()
        
        # Пробуем выполнить действия
        member = await api.get_member(123456)
        await member.follow()
        
    except IncorrectLoginData:
        print("Ошибка авторизации - проверьте cookies")
    except ThisIsYouError:
        print("Нельзя выполнить это действие с самим собой")
    except APIError as e:
        print(f"Ошибка API: {e}")
    finally:
        await api.close()
Для подробного описания методов и моделей смотрите исходный код и примеры.