Skip to content

Commit a06e1a1

Browse files
committed
perf: editMessageMedia on text
previously this needed to be recreated. Now this can be edited onto the same message. added in Bot API 7.11
1 parent 4262997 commit a06e1a1

File tree

2 files changed

+49
-3
lines changed

2 files changed

+49
-3
lines changed

source/send-menu.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,11 @@ export async function editMenuOnContext<Context extends BaseContext>(
8989
if (isMediaBody(body)) {
9090
if (
9191
'animation' in message
92-
|| 'audio' in message
9392
|| 'document' in message
93+
|| 'audio' in message
9494
|| 'photo' in message
9595
|| 'video' in message
96+
|| 'text' in message
9697
) {
9798
return context.editMessageMedia(
9899
{

test/send-menu/context-edit.ts

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ await test('context-edit media reply when not a callback query', async t => {
216216
strictEqual(replyWithPhoto.mock.callCount(), 1);
217217
});
218218

219-
await test('context-edit media reply when text message', async t => {
219+
await test('context-edit media reply when location message', async t => {
220220
const menu = new MenuTemplate<BaseContext>({
221221
media: 'whatever',
222222
type: 'photo',
@@ -252,7 +252,10 @@ await test('context-edit media reply when text message', async t => {
252252
message_id: 666,
253253
date: 666,
254254
chat: undefined as any,
255-
text: 'whatever',
255+
location: {
256+
latitude: 13,
257+
longitude: 37,
258+
},
256259
},
257260
},
258261
deleteMessage,
@@ -306,6 +309,48 @@ await test('context-edit media edit when media message', async t => {
306309
strictEqual(editMessageMedia.mock.callCount(), 1);
307310
});
308311

312+
await test('context-edit media edit when text message', async t => {
313+
const menu = new MenuTemplate<BaseContext>({
314+
media: 'whatever',
315+
type: 'photo',
316+
});
317+
318+
const editMessageMedia = t.mock.fn<BaseContext['editMessageMedia']>(
319+
async (media, other) => {
320+
deepStrictEqual(media, {
321+
media: 'whatever',
322+
type: 'photo',
323+
caption: undefined,
324+
parse_mode: undefined,
325+
});
326+
deepStrictEqual(other, {
327+
reply_markup: {
328+
inline_keyboard: [],
329+
},
330+
});
331+
return undefined as any;
332+
},
333+
);
334+
const fakeContext: Partial<BaseContext> = {
335+
callbackQuery: {
336+
id: '666',
337+
from: undefined as any,
338+
chat_instance: '666',
339+
data: '666',
340+
message: {
341+
message_id: 666,
342+
date: 666,
343+
chat: undefined as any,
344+
text: 'whatever',
345+
},
346+
},
347+
editMessageMedia,
348+
};
349+
350+
await editMenuOnContext(menu, fakeContext as any, '/');
351+
strictEqual(editMessageMedia.mock.callCount(), 1);
352+
});
353+
309354
await test('context-edit does not throw message is not modified', async t => {
310355
const menu = new MenuTemplate<BaseContext>('whatever');
311356

0 commit comments

Comments
 (0)