Skip to content

Commit b5598fa

Browse files
authored
fix: avatar upload (#219)
* fix: avatar upload * chore: logger on photos * fix: type
1 parent 0ee3b03 commit b5598fa

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

apps/core-telegram/server/services/telegram/atrium-bot.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ async function handleContact(ctx: Context) {
113113
userId: user.id,
114114
})
115115

116-
logger.log('new user', createdTelegramUser)
116+
logger.log('New Telegram user', createdTelegramUser)
117117

118118
await ctx.setChatMenuButton({
119119
chat_id: ctx.message.chat.id,
@@ -157,6 +157,8 @@ async function getAndUploadUserPhoto(ctx: Context, botToken: string): Promise<st
157157
}
158158

159159
const photos = await ctx.api.getUserProfilePhotos(ctx.message.from.id)
160+
logger.log(`User ${ctx.message.from.id} have ${photos.total_count} photos:`, JSON.stringify(photos.photos))
161+
160162
const userPhoto = photos.photos[0]?.pop()
161163
if (userPhoto?.file_id) {
162164
const fileDownloadUrl = await getFileDownloadUrl({ ctx, fileId: userPhoto.file_id, botToken, isLocalBot: false })
@@ -180,14 +182,17 @@ async function findOrCreateAtriumUser(data: { phone: string, user: { name: strin
180182
const avatarUrl = await getAndUploadUserPhoto(data.ctx, data.botToken)
181183
logger.log('New user avatar', avatarUrl)
182184

183-
return db.user.create({
185+
const createdUser = await db.user.create({
184186
id,
185187
phone: data.phone,
186188
type: 'staff',
187189
name: data.user.name,
188190
surname: data.user.surname,
189191
avatarUrl: avatarUrl ?? defaultAvatarUrl,
190192
})
193+
logger.log('New user', createdUser)
194+
195+
return createdUser
191196
}
192197

193198
return userInDB

apps/core-telegram/server/services/telegram/common.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Context } from 'grammy'
2+
import { Buffer } from 'node:buffer'
23
import fs from 'node:fs/promises'
34
import { db } from '@roll-stack/database'
45
import { useAtriumBot } from './atrium-bot'
@@ -59,12 +60,13 @@ export async function uploadToStorage(downloadUrl: string, fileId: string) {
5960
try {
6061
const extension = downloadUrl.split('.').pop()
6162

62-
let buffer
63+
let buffer: Buffer
6364

6465
if (downloadUrl.startsWith('http://') || downloadUrl.startsWith('https://')) {
6566
// Download file
6667
const response = await fetch(downloadUrl)
67-
buffer = await response.arrayBuffer()
68+
const arrayBuffer = await response.arrayBuffer()
69+
buffer = Buffer.from(arrayBuffer)
6870
} else {
6971
// Read file
7072
buffer = await fs.readFile(downloadUrl)
@@ -96,11 +98,15 @@ export async function getFileDownloadUrl(data: { ctx: Context, fileId: string, b
9698

9799
// as /var/lib/bot/token/documents/file_id.ext
98100
if (data.isLocalBot) {
101+
logger.log('getFileDownloadUrl: local mode', file.file_path)
99102
return file.file_path
100103
}
101104

102105
// or from telegram api
103-
return `https://api.telegram.org/file/bot${data.botToken}/${file.file_path}`
106+
const telegramServerUrl = `https://api.telegram.org/file/bot${data.botToken}/${file.file_path}`
107+
logger.log('getFileDownloadUrl: remote mode', telegramServerUrl)
108+
109+
return telegramServerUrl
104110
} catch (e) {
105111
logger.error('getFileDownloadUrl', e)
106112
return null

0 commit comments

Comments
 (0)