1+ /// <reference path="../jsx.d.ts" />
2+ import React , { useState } from 'react' ;
3+ import { MtcuteAdapter } from '../mtcute-adapter' ;
4+
5+ const AutoDeleteDemo : React . FC = ( ) => {
6+ const [ mode , setMode ] = useState < 'normal' | 'secret' > ( 'normal' ) ;
7+ const [ messages , setMessages ] = useState < string [ ] > ( [ ] ) ;
8+
9+ const handleNormalInput = ( text : string ) => {
10+ setMessages ( prev => [ ...prev , `Normal message: ${ text } ` ] ) ;
11+ } ;
12+
13+ const handleSecretInput = ( text : string ) => {
14+ setMessages ( prev => [ ...prev , `Secret received (message deleted): ***` ] ) ;
15+ } ;
16+
17+ const toggleMode = ( ) => {
18+ setMode ( mode === 'normal' ? 'secret' : 'normal' ) ;
19+ setMessages ( [ ] ) ;
20+ } ;
21+
22+ return (
23+ < >
24+ < b > Input Auto-Delete Demo</ b >
25+ { '\n\n' }
26+
27+ Current mode: < b > { mode === 'normal' ? '📝 Normal Mode' : '🤫 Secret Mode' } </ b >
28+ { '\n\n' }
29+
30+ { mode === 'normal' ? (
31+ < >
32+ < i > Send any message - it will stay in the chat.</ i >
33+ { '\n' }
34+ < input onSubmit = { handleNormalInput } />
35+ </ >
36+ ) : (
37+ < >
38+ < i > Send a secret message - it will be deleted automatically!</ i >
39+ { '\n' }
40+ < input onSubmit = { handleSecretInput } autoDelete />
41+ </ >
42+ ) }
43+
44+ { '\n\n' }
45+
46+ { messages . length > 0 && (
47+ < >
48+ < b > Received Messages:</ b >
49+ { '\n' }
50+ { messages . map ( ( msg , idx ) => (
51+ < React . Fragment key = { idx } >
52+ • { msg }
53+ { '\n' }
54+ </ React . Fragment >
55+ ) ) }
56+ { '\n' }
57+ </ >
58+ ) }
59+
60+ < row >
61+ < button onClick = { toggleMode } >
62+ Switch to { mode === 'normal' ? 'Secret' : 'Normal' } Mode
63+ </ button >
64+ { messages . length > 0 && (
65+ < button onClick = { ( ) => setMessages ( [ ] ) } > Clear</ button >
66+ ) }
67+ </ row >
68+ </ >
69+ ) ;
70+ } ;
71+
72+ // Set up the bot
73+ async function main ( ) {
74+ const adapter = new MtcuteAdapter ( {
75+ apiId : parseInt ( process . env . API_ID ! ) ,
76+ apiHash : process . env . API_HASH ! ,
77+ botToken : process . env . BOT_TOKEN !
78+ } ) ;
79+
80+ // Register the demo command
81+ adapter . onCommand ( 'autodelete' , ( ) => < AutoDeleteDemo /> ) ;
82+
83+ // Start the bot
84+ await adapter . start ( process . env . BOT_TOKEN ! ) ;
85+ console . log ( 'Auto-delete demo bot is running! Send /autodelete to start.' ) ;
86+ }
87+
88+ main ( ) . catch ( console . error ) ;
0 commit comments