mirror of
https://github.com/icewind1991/mx-puppet-steam.git
synced 2026-06-03 17:44:09 +02:00
error handling
This commit is contained in:
parent
4a1d3ea43c
commit
e32eb8895d
1 changed files with 61 additions and 42 deletions
33
src/steam.ts
33
src/steam.ts
|
|
@ -64,6 +64,7 @@ export class Steam {
|
||||||
} else if (p.client.users[steamIdString]) {
|
} else if (p.client.users[steamIdString]) {
|
||||||
return p.client.users[steamIdString];
|
return p.client.users[steamIdString];
|
||||||
} else {
|
} else {
|
||||||
|
log.info(`Getting persona for ${steamid}`);
|
||||||
let {personas} = await p.client.getPersonas([steamid]);
|
let {personas} = await p.client.getPersonas([steamid]);
|
||||||
let persona = personas[steamIdString];
|
let persona = personas[steamIdString];
|
||||||
p.knownPersonas.set(steamIdString, persona);
|
p.knownPersonas.set(steamIdString, persona);
|
||||||
|
|
@ -76,8 +77,10 @@ export class Steam {
|
||||||
if (app) {
|
if (app) {
|
||||||
return app;
|
return app;
|
||||||
} else {
|
} else {
|
||||||
|
log.info(`Getting product info for ${appId}`);
|
||||||
let {apps} = await p.client.getProductInfo([parseInt(appId, 10)], []);
|
let {apps} = await p.client.getProductInfo([parseInt(appId, 10)], []);
|
||||||
let app = apps[appId];
|
let app: AppInfo = apps[appId];
|
||||||
|
log.info(`Got product info for ${appId}: ${app.appinfo.common.name}`);
|
||||||
p.knownApps.set(appId, app);
|
p.knownApps.set(appId, app);
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
@ -182,6 +185,7 @@ export class Steam {
|
||||||
|
|
||||||
if (steamId.toString() != client.steamID.toString()) {
|
if (steamId.toString() != client.steamID.toString()) {
|
||||||
|
|
||||||
|
try {
|
||||||
await this.bridge.setUserPresence({
|
await this.bridge.setUserPresence({
|
||||||
puppetId,
|
puppetId,
|
||||||
userId: steamId.toString()
|
userId: steamId.toString()
|
||||||
|
|
@ -199,6 +203,9 @@ export class Steam {
|
||||||
userId: steamId.toString()
|
userId: steamId.toString()
|
||||||
}, "");
|
}, "");
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log.error(`Error while setting user presence ${e}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -330,6 +337,8 @@ export class Steam {
|
||||||
msg: string,
|
msg: string,
|
||||||
mediaId?: string,
|
mediaId?: string,
|
||||||
) {
|
) {
|
||||||
|
try {
|
||||||
|
log.info(`Sending chat message to ${room.roomId}`);
|
||||||
if (this.getRoomSteamId(room)) {
|
if (this.getRoomSteamId(room)) {
|
||||||
const sendMessage = await p.client.chat.sendFriendMessage(room.roomId, msg);
|
const sendMessage = await p.client.chat.sendFriendMessage(room.roomId, msg);
|
||||||
let id = `${sendMessage.server_timestamp.toISOString()}::${sendMessage.ordinal}`;
|
let id = `${sendMessage.server_timestamp.toISOString()}::${sendMessage.ordinal}`;
|
||||||
|
|
@ -345,6 +354,9 @@ export class Steam {
|
||||||
await this.bridge.eventSync.insert(room, eventId, id);
|
await this.bridge.eventSync.insert(room, eventId, id);
|
||||||
p.sentEventIds.push(id);
|
p.sentEventIds.push(id);
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log.error(`Error while sending message ${e}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async handleMatrixMessage(room: IRemoteRoom, data: IMessageEvent, event: any) {
|
public async handleMatrixMessage(room: IRemoteRoom, data: IMessageEvent, event: any) {
|
||||||
|
|
@ -367,6 +379,7 @@ export class Steam {
|
||||||
let steamId = this.getRoomSteamId(room);
|
let steamId = this.getRoomSteamId(room);
|
||||||
if (steamId) {
|
if (steamId) {
|
||||||
const buffer = await Util.DownloadFile(data.url);
|
const buffer = await Util.DownloadFile(data.url);
|
||||||
|
try {
|
||||||
let sendUrl: string = await new Promise((resolve, reject) => p.community.sendImageToUser(steamId, buffer, (err, imageUrl) => {
|
let sendUrl: string = await new Promise((resolve, reject) => p.community.sendImageToUser(steamId, buffer, (err, imageUrl) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
|
|
@ -377,6 +390,9 @@ export class Steam {
|
||||||
// since we send images trough SteamCommunity and not SteamUser we get them back as `friendMessageEcho`
|
// since we send images trough SteamCommunity and not SteamUser we get them back as `friendMessageEcho`
|
||||||
// so we need to track them to make sure we dont double post them
|
// so we need to track them to make sure we dont double post them
|
||||||
p.ourSendImages.push(sendUrl);
|
p.ourSendImages.push(sendUrl);
|
||||||
|
} catch (e) {
|
||||||
|
log.error(`Error while sending image ${e}`);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await this.bridge.sendStatusMessage(room.puppetId, `Sending images to groups is currently not supported`);
|
await this.bridge.sendStatusMessage(room.puppetId, `Sending images to groups is currently not supported`);
|
||||||
}
|
}
|
||||||
|
|
@ -460,6 +476,7 @@ export class Steam {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getGroupInfo(puppet: ISteamPuppet, groupId: string): Promise<IGroupDetails | null> {
|
public async getGroupInfo(puppet: ISteamPuppet, groupId: string): Promise<IGroupDetails | null> {
|
||||||
|
log.info(`Getting group info for ${groupId}`);
|
||||||
let {chat_room_groups} = await new Promise((resolve, reject) => puppet.client.chat.getGroups((err, response) => {
|
let {chat_room_groups} = await new Promise((resolve, reject) => puppet.client.chat.getGroups((err, response) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
|
|
@ -500,29 +517,31 @@ export class Steam {
|
||||||
const p = this.puppets[room.puppetId];
|
const p = this.puppets[room.puppetId];
|
||||||
let steamId = this.getRoomSteamId(room);
|
let steamId = this.getRoomSteamId(room);
|
||||||
if (steamId && typing) {
|
if (steamId && typing) {
|
||||||
p.client.chat.sendFriendTyping(steamId);
|
log.info(`sending typing notification to ${steamId}`);
|
||||||
|
p.client.chat.sendFriendTyping(steamId).catch(e => log.error(`Error while sending typing notification ${e}`));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public handleMatrixRead(room: IRemoteRoom, eventId: string) {
|
public handleMatrixRead(room: IRemoteRoom, eventId: string) {
|
||||||
const p = this.puppets[room.puppetId];
|
const p = this.puppets[room.puppetId];
|
||||||
|
log.info(`sending read marker for ${room.roomId}`);
|
||||||
let steamId = this.getRoomSteamId(room);
|
let steamId = this.getRoomSteamId(room);
|
||||||
if (steamId) {
|
if (steamId) {
|
||||||
p.client.chat.ackFriendMessage(steamId, new Date());
|
p.client.chat.ackFriendMessage(steamId, new Date()).catch(() => {});
|
||||||
} else {
|
} else {
|
||||||
let [groupId, chatId] = this.parseChatRoomId(room.roomId);
|
let [groupId, chatId] = this.parseChatRoomId(room.roomId);
|
||||||
p.client.chat.ackChatMessage(groupId, chatId, new Date());
|
p.client.chat.ackChatMessage(groupId, chatId, new Date()).catch(e => log.error(`Error while sending read marker ${e}`));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public handleMatrixPresence(puppetId, presence: IPresenceEvent) {
|
public handleMatrixPresence(puppetId, presence: IPresenceEvent) {
|
||||||
const p = this.puppets[puppetId];
|
const p = this.puppets[puppetId];
|
||||||
if (presence.presence === "offline") {
|
if (presence.presence === "offline") {
|
||||||
p.client.setPersona(EPersonaState.Offline);
|
p.client.setPersona(EPersonaState.Offline).catch(e => log.error(`Error while sending presence ${e}`));
|
||||||
} else if (presence.presence === "online") {
|
} else if (presence.presence === "online") {
|
||||||
p.client.setPersona(EPersonaState.Online);
|
p.client.setPersona(EPersonaState.Online).catch(e => log.error(`Error while sending presence ${e}`));
|
||||||
} else if (presence.presence === "unavailable") {
|
} else if (presence.presence === "unavailable") {
|
||||||
p.client.setPersona(EPersonaState.Away);
|
p.client.setPersona(EPersonaState.Away).catch(e => log.error(`Error while sending presence ${e}`));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue