Skip to content

Commit 6841636

Browse files
committed
try to reply to business messages
1 parent d7805bf commit 6841636

File tree

4 files changed

+105
-1
lines changed

4 files changed

+105
-1
lines changed

packages/main/src/types/PartialTelegramUpdate.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import TelegramBusinessMessage from './TelegramBusinessMessage.js';
12
import TelegramInlineQuery from './TelegramInlineQuery.js';
23
import TelegramMessage from './TelegramMessage.js';
34

@@ -8,5 +9,6 @@ interface PartialTelegramUpdate {
89
channel_post?: TelegramMessage;
910
edited_channel_post?: TelegramMessage;
1011
inline_query?: TelegramInlineQuery;
12+
business_message?: TelegramBusinessMessage;
1113
}
1214
export default PartialTelegramUpdate;
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import TelegramChat from './TelegramChat.js';
2+
import { TelegramDocument } from './TelegramDocument.js';
3+
import TelegramFrom from './TelegramFrom.js';
4+
import TelegramMessageEntity from './TelegramMessageEntity.js';
5+
import TelegramPhotoSize from './TelegramPhotoSize.js';
6+
import TelegramUser from './TelegramUser.js';
7+
import TelegramMessage from './TelegramMessage.js';
8+
9+
interface TelegramBusinessMessage {
10+
message_id: number;
11+
business_connection_id: string;
12+
from: TelegramFrom;
13+
sender_chat?: TelegramChat;
14+
date: number;
15+
chat: TelegramChat;
16+
forward_from?: TelegramUser;
17+
forward_from_chat?: TelegramChat;
18+
forward_from_message_id?: number;
19+
forward_signature?: string;
20+
forward_sender_name?: string;
21+
forward_date?: number;
22+
is_automatic_forward?: boolean;
23+
reply_to_message?: TelegramMessage;
24+
via_bot?: TelegramUser;
25+
edit_date?: number;
26+
has_protected_content?: boolean;
27+
media_group_id?: string;
28+
author_signature?: string;
29+
text?: string;
30+
entities?: TelegramMessageEntity[];
31+
// animation?: TelegramAnimation;
32+
// audio?: TelegramAudio;
33+
document?: TelegramDocument;
34+
photo?: TelegramPhotoSize[];
35+
// sticker?: TelegramSticker;
36+
// video?: TelegramVideo;
37+
// video_note?: TelegramVideoNote;
38+
// voice?: TelegramVoice;
39+
caption?: string;
40+
caption_entities?: TelegramMessageEntity[];
41+
// contact?: TelegramContact;
42+
// dice?: TelegramDice;
43+
// poll?: TelegramPoll;
44+
// venue?: TelegramVenue;
45+
// location?: TelegramLocation;
46+
new_chat_members?: TelegramUser[];
47+
new_chat_member?: TelegramUser;
48+
left_chat_member?: TelegramUser;
49+
new_chat_title?: string;
50+
// new_chat_photo?: TelegramPhotoSize[];
51+
delete_chat_photo?: boolean;
52+
group_chat_created?: boolean;
53+
supergroup_chat_created?: boolean;
54+
channel_chat_created?: boolean;
55+
// message_auto_delete_timer_changed?: TelegramAutoDeleteTimerChanged;
56+
migrate_to_chat_id?: number;
57+
migrate_from_chat_id?: number;
58+
pinned_message?: TelegramMessage;
59+
// invoice?: TelegramInvoice;
60+
// successful_payment?: TelegramSuccessfulPayment;
61+
connected_website?: string;
62+
}
63+
export default TelegramBusinessMessage;

packages/main/src/types/TelegramUpdate.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import TelegramInlineQuery from './TelegramInlineQuery.js';
22
import TelegramMessage from './TelegramMessage.js';
33
import PartialTelegramUpdate from './PartialTelegramUpdate.js';
44
import TelegramCallbackQuery from './TelegramCallbackQuery.js';
5+
import TelegramBusinessMessage from './TelegramBusinessMessage.js';
56

67
export default class TelegramUpdate {
78
update_id: number;
@@ -12,6 +13,7 @@ export default class TelegramUpdate {
1213
inline_query?: TelegramInlineQuery;
1314
// chosen_inline_result?: TelegramChosenInlineResult;
1415
callback_query?: TelegramCallbackQuery;
16+
business_message?: TelegramBusinessMessage;
1517
// shipping_query?: TelegramShippingQuery;
1618
// pre_checkout_query?: TelegramPreCheckoutQuery;
1719
// poll?: TelegramPoll;
@@ -26,6 +28,7 @@ export default class TelegramUpdate {
2628
this.channel_post = update.channel_post;
2729
this.edited_channel_post = update.edited_channel_post;
2830
this.inline_query = update.inline_query;
31+
this.business_message = update.business_message;
2932
// chosen_inline_result = update.chosen_inline_result;
3033
// callback_query = update.callback_query;
3134
// shipping_query = update.shipping_query;

packages/worker/src/worker.ts

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,43 @@ export default {
265265
}
266266
break;
267267
}
268-
268+
case 'business_message': {
269+
const prompt = bot.update.business_message?.text?.toString() ?? '';
270+
const { results } = await env.DB.prepare('SELECT * FROM Messages WHERE userId=?')
271+
.bind(bot.update.inline_query ? bot.update.inline_query.from.id : bot.update.message?.from.id)
272+
.all();
273+
const message_history = results.map((col) => ({ role: 'system', content: col.content as string }));
274+
const messages = [
275+
{ role: 'system', content: 'You are a friendly assistant named TuxRobot. Use lots of emojis in your responses.' },
276+
...message_history,
277+
{
278+
role: 'user',
279+
content: prompt,
280+
},
281+
];
282+
let response: AiTextGenerationOutput;
283+
try {
284+
// @ts-expect-error broken bindings
285+
response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { messages, max_tokens: 150 });
286+
} catch (e) {
287+
console.log(e);
288+
await bot.reply(`Error: ${e as string}`);
289+
return new Response('ok');
290+
}
291+
if ('response' in response) {
292+
if (response.response) {
293+
await bot.reply(await markdown_to_html(response.response ?? ''), 'HTML');
294+
await env.DB.prepare('INSERT INTO Messages (id, userId, content) VALUES (?, ?, ?)')
295+
.bind(
296+
crypto.randomUUID(),
297+
bot.update.inline_query ? bot.update.inline_query.from.id : bot.update.message?.from.id,
298+
`'[INST] ${prompt} [/INST] \n ${response.response}`,
299+
)
300+
.run();
301+
}
302+
}
303+
break;
304+
}
269305
default:
270306
break;
271307
}

0 commit comments

Comments
 (0)