Skip to content

Commit 3a2fa76

Browse files
leeran7wtfsayo
andauthored
feat: Load multiple characters from a single remote url (elizaOS#2475)
* Feat: Load multiple characters from a single remote url * Chore: Added fetch try/catch * Chore: added parenthesis around s in error message --------- Co-authored-by: Sayo <hi@sayo.wtf>
1 parent 5b57a6d commit 3a2fa76

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

agent/src/index.ts

+22-6
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,26 @@ export async function loadCharacterFromOnchain(): Promise<Character[]> {
249249
}
250250
}
251251

252-
async function loadCharacterFromUrl(url: string): Promise<Character> {
253-
const response = await fetch(url);
254-
const character = await response.json();
255-
return await jsonToCharacter(url, character);
252+
253+
async function loadCharactersFromUrl(url: string): Promise<Character[]> {
254+
try {
255+
const response = await fetch(url);
256+
const responseJson = await response.json();
257+
258+
let characters: Character[] = [];
259+
if (Array.isArray(responseJson)) {
260+
characters = await Promise.all(
261+
responseJson.map((character) => jsonToCharacter(url, character))
262+
);
263+
} else {
264+
const character = await jsonToCharacter(url, responseJson);
265+
characters.push(character);
266+
}
267+
return characters;
268+
} catch (e) {
269+
elizaLogger.error(`Error loading character(s) from ${url}: ${e}`);
270+
process.exit(1);
271+
}
256272
}
257273

258274
async function jsonToCharacter(
@@ -388,8 +404,8 @@ export async function loadCharacters(
388404
process.env.REMOTE_CHARACTER_URLS
389405
);
390406
for (const characterUrl of characterUrls) {
391-
const character = await loadCharacterFromUrl(characterUrl);
392-
loadedCharacters.push(character);
407+
const characters = await loadCharactersFromUrl(characterUrl);
408+
loadedCharacters.push(...characters);
393409
}
394410
}
395411

0 commit comments

Comments
 (0)