Getting Started¶
This guide shows you how to connect and perform your first actions in just a few minutes.
Connecting¶
There are two ways to use the SDK:
Simple (synchronous) — recommended for beginners:
from artifacts import ArtifactsClient
with ArtifactsClient(token="your_token") as client:
# all your code here
pass
Async — for advanced users or multi-character bots:
import asyncio
from artifacts import AsyncArtifactsClient
async def main():
async with AsyncArtifactsClient(token="your_token") as client:
# all your code here (use await)
pass
asyncio.run(main())
Tip
In the sync version, you do not need to write await.
The SDK takes care of that for you.
List Your Characters¶
from artifacts import ArtifactsClient
with ArtifactsClient(token="your_token") as client:
characters = client.my_account.get_characters()
for c in characters:
print(f"{c.name} — level {c.level} — HP {c.hp}/{c.max_hp}")
Control a Character¶
# Pick a character
char = client.character("MyChar")
# View its info
info = char.get()
print(f"{info.name} is at ({info.x}, {info.y})")
print(f"HP: {info.hp}/{info.max_hp}")
print(f"Gold: {info.gold}")
Move and Fight¶
# Go to (0, 1) — that's where the chickens are!
char.move(x=0, y=1)
# Fight the monster on the tile
result = char.fight()
fight = result.fight
print(f"Result: {fight.result.value}") # "win" or "loss"
print(f"Turns: {fight.turns}")
print(f"+{fight.characters[0].xp} XP")
print(f"+{fight.characters[0].gold} gold")
# Rest if HP is low
updated = result.characters[0]
if updated.hp < updated.max_hp * 0.5:
rest = char.rest()
print(f"+{rest.hp_restored} HP restored")
Note
The SDK automatically waits for cooldowns between actions. You don’t need to manage anything!
Browse Game Data¶
The client gives you access to all public game data:
# Monster info
chicken = client.monsters.get("chicken")
print(f"{chicken.name} — level {chicken.level} — HP {chicken.hp}")
# Search for items
items = client.items.get_all(min_level=1, max_level=5, size=5)
for item in items.data:
print(f"{item.name} (level {item.level})")
# Explore the map
maps = client.maps.get_all(content_type="monster", size=5)
for m in maps.data:
print(f"({m.x}, {m.y}) — {m.content.code if m.content else '?'}")
Quick Reference¶
What you want to do |
Code |
|---|---|
Connect |
|
Pick a character |
|
Move |
|
Fight |
|
Rest |
|
View character info |
|
Game data |
|
Next Step¶
Head to Your Character to learn everything about character actions.