feat(suggestion-box): ✨ add cors, return ticket number
Run markdownlint / lint (push) Has been cancelled
Details
Run markdownlint / lint (push) Has been cancelled
Details
parent
a60eaa980f
commit
8a7cb895c4
|
@ -4,6 +4,7 @@ import { Bot, InputFile, InputMediaBuilder } from 'grammy'
|
||||||
import { Hono } from 'hono'
|
import { Hono } from 'hono'
|
||||||
import { env } from 'hono/adapter'
|
import { env } from 'hono/adapter'
|
||||||
import { handle } from 'hono/cloudflare-pages'
|
import { handle } from 'hono/cloudflare-pages'
|
||||||
|
import { cors } from 'hono/cors'
|
||||||
import { customAlphabet } from 'nanoid'
|
import { customAlphabet } from 'nanoid'
|
||||||
|
|
||||||
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 8)
|
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 8)
|
||||||
|
@ -28,6 +29,8 @@ app.onError((err, c) => {
|
||||||
return c.json(newError500(), 500)
|
return c.json(newError500(), 500)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
app.use('/api/*', cors())
|
||||||
|
|
||||||
app.get('/api', (c) => {
|
app.get('/api', (c) => {
|
||||||
return c.text('Hello, Project Trans SuggestionBox!')
|
return c.text('Hello, Project Trans SuggestionBox!')
|
||||||
})
|
})
|
||||||
|
@ -72,7 +75,9 @@ app.post('/api/v1/suggestion', async (c) => {
|
||||||
return c.json(newErrorFormat400(), 400)
|
return c.json(newErrorFormat400(), 400)
|
||||||
}
|
}
|
||||||
|
|
||||||
const msgs = [`<b>意见箱收到新消息</b> #TN-${nanoid()}\n`]
|
const ticketNumber = `#TN-${nanoid()}`
|
||||||
|
|
||||||
|
const msgs = [`<b>意见箱收到新消息</b> ${ticketNumber}\n`]
|
||||||
msgs.push(`${replaceHtmlTag(textContent)}\n`)
|
msgs.push(`${replaceHtmlTag(textContent)}\n`)
|
||||||
contactContent
|
contactContent
|
||||||
&& msgs.push(
|
&& msgs.push(
|
||||||
|
@ -118,7 +123,7 @@ app.post('/api/v1/suggestion', async (c) => {
|
||||||
else {
|
else {
|
||||||
await bot.api.sendMessage(TG_GROUP_ID, message, { parse_mode: 'HTML' })
|
await bot.api.sendMessage(TG_GROUP_ID, message, { parse_mode: 'HTML' })
|
||||||
}
|
}
|
||||||
return c.json(newSuccess())
|
return c.json(newSuccess(ticketNumber))
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
// TODO handle error
|
// TODO handle error
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
"deploy": "wrangler deploy --minify src/index.ts"
|
"deploy": "wrangler deploy --minify src/index.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"grammy": "^1.21.1",
|
"grammy": "^1.35.0",
|
||||||
"hono": "^4.0.8",
|
"hono": "^4.7.2",
|
||||||
"nanoid": "^5.1.0"
|
"nanoid": "^5.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@cloudflare/workers-types": "^4.20240208.0"
|
"@cloudflare/workers-types": "^4.20250214.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name = "server"
|
name = "server"
|
||||||
compatibility_date = "2023-12-01"
|
compatibility_date = "2025-02-14"
|
||||||
|
|
||||||
# [vars]
|
# [vars]
|
||||||
# MY_VARIABLE = "production_value"
|
# MY_VARIABLE = "production_value"
|
||||||
|
|
|
@ -61,18 +61,18 @@ importers:
|
||||||
functions:
|
functions:
|
||||||
dependencies:
|
dependencies:
|
||||||
grammy:
|
grammy:
|
||||||
specifier: ^1.21.1
|
specifier: ^1.35.0
|
||||||
version: 1.33.0
|
version: 1.35.0
|
||||||
hono:
|
hono:
|
||||||
specifier: ^4.0.8
|
specifier: ^4.7.2
|
||||||
version: 4.6.13
|
version: 4.7.2
|
||||||
nanoid:
|
nanoid:
|
||||||
specifier: ^5.1.0
|
specifier: ^5.1.0
|
||||||
version: 5.1.0
|
version: 5.1.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@cloudflare/workers-types':
|
'@cloudflare/workers-types':
|
||||||
specifier: ^4.20240208.0
|
specifier: ^4.20250214.0
|
||||||
version: 4.20241205.0
|
version: 4.20250214.0
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
|
@ -332,9 +332,6 @@ packages:
|
||||||
'@clack/prompts@0.10.0':
|
'@clack/prompts@0.10.0':
|
||||||
resolution: {integrity: sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==}
|
resolution: {integrity: sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==}
|
||||||
|
|
||||||
'@cloudflare/workers-types@4.20241205.0':
|
|
||||||
resolution: {integrity: sha512-pj1VKRHT/ScQbHOIMFODZaNAlJHQHdBSZXNIdr9ebJzwBff9Qz8VdqhbhggV7f+aUEh8WSbrsPIo4a+WtgjUvw==}
|
|
||||||
|
|
||||||
'@cloudflare/workers-types@4.20250214.0':
|
'@cloudflare/workers-types@4.20250214.0':
|
||||||
resolution: {integrity: sha512-+M8oOFVbyXT5GeJrYLWMUGyPf5wGB4+k59PPqdedtOig7NjZ5r4S79wMdaZ/EV5IV8JPtZBSNjTKpDnNmfxjaQ==}
|
resolution: {integrity: sha512-+M8oOFVbyXT5GeJrYLWMUGyPf5wGB4+k59PPqdedtOig7NjZ5r4S79wMdaZ/EV5IV8JPtZBSNjTKpDnNmfxjaQ==}
|
||||||
|
|
||||||
|
@ -867,8 +864,8 @@ packages:
|
||||||
resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==}
|
resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@grammyjs/types@3.17.0':
|
'@grammyjs/types@3.19.0':
|
||||||
resolution: {integrity: sha512-e8AR3xQwRAFX248E7Qw/7mIu1OzvoXloJzOBJVtuPKzzL7tGkn5trZAdZUBgGViVQg5ZwVS/x9N2nRrcyH/DfA==}
|
resolution: {integrity: sha512-N0MS+RJG+AGSNuka1GWVj88oyK1oti4I0eQq6jGo4hic3P9MwFfnHjGQuIExZ3tlJUrZYwC/T7gk4Tu3+guJyg==}
|
||||||
|
|
||||||
'@humanfs/core@0.19.1':
|
'@humanfs/core@0.19.1':
|
||||||
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
||||||
|
@ -1672,15 +1669,6 @@ packages:
|
||||||
supports-color:
|
supports-color:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
debug@4.3.4:
|
|
||||||
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
|
||||||
engines: {node: '>=6.0'}
|
|
||||||
peerDependencies:
|
|
||||||
supports-color: '*'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
supports-color:
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
debug@4.4.0:
|
debug@4.4.0:
|
||||||
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
|
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
|
||||||
engines: {node: '>=6.0'}
|
engines: {node: '>=6.0'}
|
||||||
|
@ -2123,8 +2111,8 @@ packages:
|
||||||
graceful-fs@4.2.11:
|
graceful-fs@4.2.11:
|
||||||
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
||||||
|
|
||||||
grammy@1.33.0:
|
grammy@1.35.0:
|
||||||
resolution: {integrity: sha512-kvQuIBtiPcqNGntsVevjXYBMByIJ3PtOP7swr1zbCg6xY+dNX76f4VX5auKuJNI/sflexPr3L4wNwbTJHu9ocA==}
|
resolution: {integrity: sha512-Qlu5kVaekL4w5clWSpQcRxwJJoEeU13g8DTALuNbZsDAJuFJNXBuI8EqR6U1m1of7j9NEMQz59sXu+0/KsKjyg==}
|
||||||
engines: {node: ^12.20.0 || >=14.13.1}
|
engines: {node: ^12.20.0 || >=14.13.1}
|
||||||
|
|
||||||
graphemer@1.4.0:
|
graphemer@1.4.0:
|
||||||
|
@ -2175,8 +2163,8 @@ packages:
|
||||||
hastscript@9.0.0:
|
hastscript@9.0.0:
|
||||||
resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==}
|
resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==}
|
||||||
|
|
||||||
hono@4.6.13:
|
hono@4.7.2:
|
||||||
resolution: {integrity: sha512-haV0gaMdSjy9URCRN9hxBPlqHa7fMm/T72kAImIxvw4eQLbNz1rgjN4hHElLJSieDiNuiIAXC//cC6YGz2KCbg==}
|
resolution: {integrity: sha512-8V5XxoOF6SI12jkHkzX/6aLBMU5GEF5g387EjVSQipS0DlxWgWGSMeEayY3CRBjtTUQYwLHx9JYouWqKzy2Vng==}
|
||||||
engines: {node: '>=16.9.0'}
|
engines: {node: '>=16.9.0'}
|
||||||
|
|
||||||
hookable@5.5.3:
|
hookable@5.5.3:
|
||||||
|
@ -2633,9 +2621,6 @@ packages:
|
||||||
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
|
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
ms@2.1.2:
|
|
||||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
|
||||||
|
|
||||||
ms@2.1.3:
|
ms@2.1.3:
|
||||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||||
|
|
||||||
|
@ -3780,8 +3765,6 @@ snapshots:
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
sisteransi: 1.0.5
|
sisteransi: 1.0.5
|
||||||
|
|
||||||
'@cloudflare/workers-types@4.20241205.0': {}
|
|
||||||
|
|
||||||
'@cloudflare/workers-types@4.20250214.0': {}
|
'@cloudflare/workers-types@4.20250214.0': {}
|
||||||
|
|
||||||
'@docsearch/css@3.8.2': {}
|
'@docsearch/css@3.8.2': {}
|
||||||
|
@ -4111,7 +4094,7 @@ snapshots:
|
||||||
'@eslint/core': 0.10.0
|
'@eslint/core': 0.10.0
|
||||||
levn: 0.4.1
|
levn: 0.4.1
|
||||||
|
|
||||||
'@grammyjs/types@3.17.0': {}
|
'@grammyjs/types@3.19.0': {}
|
||||||
|
|
||||||
'@humanfs/core@0.19.1': {}
|
'@humanfs/core@0.19.1': {}
|
||||||
|
|
||||||
|
@ -5035,10 +5018,6 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
|
|
||||||
debug@4.3.4:
|
|
||||||
dependencies:
|
|
||||||
ms: 2.1.2
|
|
||||||
|
|
||||||
debug@4.4.0:
|
debug@4.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
|
@ -5627,11 +5606,11 @@ snapshots:
|
||||||
|
|
||||||
graceful-fs@4.2.11: {}
|
graceful-fs@4.2.11: {}
|
||||||
|
|
||||||
grammy@1.33.0:
|
grammy@1.35.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@grammyjs/types': 3.17.0
|
'@grammyjs/types': 3.19.0
|
||||||
abort-controller: 3.0.0
|
abort-controller: 3.0.0
|
||||||
debug: 4.3.4
|
debug: 4.4.0
|
||||||
node-fetch: 2.7.0
|
node-fetch: 2.7.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
@ -5739,7 +5718,7 @@ snapshots:
|
||||||
property-information: 6.5.0
|
property-information: 6.5.0
|
||||||
space-separated-tokens: 2.0.2
|
space-separated-tokens: 2.0.2
|
||||||
|
|
||||||
hono@4.6.13: {}
|
hono@4.7.2: {}
|
||||||
|
|
||||||
hookable@5.5.3: {}
|
hookable@5.5.3: {}
|
||||||
|
|
||||||
|
@ -6378,8 +6357,6 @@ snapshots:
|
||||||
|
|
||||||
mrmime@2.0.1: {}
|
mrmime@2.0.1: {}
|
||||||
|
|
||||||
ms@2.1.2: {}
|
|
||||||
|
|
||||||
ms@2.1.3: {}
|
ms@2.1.3: {}
|
||||||
|
|
||||||
nanoid@3.3.8: {}
|
nanoid@3.3.8: {}
|
||||||
|
|
Loading…
Reference in New Issue