├── .gitignore
├── README.md
├── config.ini
├── main.py
└── strings.py
/.gitignore:
--------------------------------------------------------------------------------
1 | venv
2 | .idea
3 | config.ini
4 | *session
5 | *journal
6 | __pycache__
7 |
8 | users.json
9 | uses.txt
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # WhatsApp API Bot
4 |
5 | ### Telegram bot to create direct links with pre-filled text for WhatsApp Chats
6 |
7 | > You can check our bot [here](https://t.me/WhatsAppAPIbot).
8 |
9 | The bot is based on the API [provided](https://faq.whatsapp.com/general/chats/how-to-use-click-to-chat/) by WhatsApp.
10 |
11 | ## Translation Contributions
12 | You can add your language to the bot by editing the [strings.py](/strings.py) file and adding a translation in the appropriate format:
13 | ```python
14 | strings = {
15 | "example1": {
16 | "en": "This string represents message exmple1",
17 | "he": "המחרוזת הזו מייצגת הודעת דוגמה 1",
18 | "ru": "Эта строка представляет сообщение exmple1"
19 | },
20 | "example2": {
21 | "en": "This string represents message exmple2",
22 | "he": "המחרוזת הזו מייצגת הודעת דוגמה 2",
23 | "ru": "Эта строка представляет сообщение exmple2"
24 | }
25 | }
26 | ```
27 | - Add your language code as key, the lang-code should be in `IETF language tag` format.
28 | - Try to stick to the format and translate from the English language available in the file.
29 | - Maintain the position of the special characters (emojis, `.*,-/\{}`).
30 | - When you done, open a __pull request__ or send us the file to [our](https://t.me/RobotTrickSupport) Telegram.
31 |
32 |
33 |
34 | ## Run the bot by yourself
35 |
36 | - Clone this reposetory:
37 | ```
38 | git clone https://github.com/RobotTrick/WhatsApp-API-Bot.git
39 | ```
40 | - Install requirements (``pyrogram, tgcrypto``):
41 | ```
42 | pip3 install -U pyrogram tgcrypto
43 | ```
44 | - Edit and insert the folowing values into the [config](/config.ini) file:
45 | ```
46 | [pyrogram]
47 | api_id = XXXXXXXXXXX
48 | api_hash = XXXXXXXXXXXXXXXXXXXXXXXXXX
49 | bot_token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
50 | ```
51 | * ``api_id`` & ``api_hash`` You can get from [my.telegram.org](https://my.telegram.org).
52 | * ``bot_token`` you can get by create new bot on [BotFather](https://t.me/BotFather).
53 | - Run the bot:
54 | ```
55 | python3 main.py
56 | ```
57 |
58 | ## Supported languages
59 | - [x] English
60 | - [x] Hebrew
61 | - [x] Italian (By [@seba7193](https://t.me/SebaBio))
62 | - [x] Deutsch (By [@TLGRM_Support](https://t.me/TLGRM_Support))
63 | - [x] Spanish (By [@Dylan_22](https://t.me/Dylan_22))
64 |
65 | ## TODO's
66 | - [x] Send message to specific phone number.
67 | - [ ] Open chat with specific number.
68 | - [ ] Create link with pre-filled message to pick chat.
69 | ---
70 | Created with ❤️ by [David Lev](https://t.me/davidlev) & [Yehuda By](https://yeudaby.com)
71 |
--------------------------------------------------------------------------------
/config.ini:
--------------------------------------------------------------------------------
1 | [pyrogram]
2 | api_id = xxxxx
3 | api_hash = xxxxxxxxxxxxxxxxxxxxxxxxx
4 | bot_token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | from urllib import parse
2 | import json
3 | from pyrogram import Client, filters, types
4 | import configparser
5 | from re import search, sub
6 | from strings import strings
7 | from typing import Union
8 | from pyrogram.types import Message, InlineQuery
9 |
10 | config = configparser.ConfigParser()
11 | config.read('config.ini')
12 |
13 | app = Client("WA")
14 |
15 |
16 | # Return message depend on the client language:
17 | def lang_msg(msg_obj: Union[Message, InlineQuery], msg_to_rpl: str) -> Union[str, bool]:
18 | msg = strings.get(msg_to_rpl)
19 | if not msg:
20 | return False
21 | lang_client = msg_obj.from_user.language_code
22 | if msg.get(lang_client):
23 | return msg[lang_client]
24 | else:
25 | return msg["en"]
26 |
27 |
28 | # Return encoded url
29 | def create_url(phone: str, text: str) -> str:
30 | format_url = "https://wa.me/{}?text={}"
31 | phone = phone.replace("+", "")
32 | if phone.startswith("05"):
33 | phone = phone.replace("0", "972", 1)
34 | return format_url.format(phone, parse.quote(text))
35 |
36 |
37 | def save_user(uid: int, save_use: bool = True):
38 | """ save user/chat id to DB """
39 | if save_use:
40 | save_uses()
41 | ids_file = "users.json"
42 | try:
43 | with open(ids_file, "r") as oFile:
44 | users: list = json.load(oFile)
45 | except FileNotFoundError:
46 | users = []
47 |
48 | if uid not in users:
49 | users.append(uid)
50 |
51 | with open(ids_file, "w") as nFile:
52 | json.dump(users, nFile, indent=4)
53 |
54 |
55 | def save_uses():
56 | """ save count of uses to DB """
57 | uses_file = "uses.txt"
58 | try:
59 | with open(uses_file) as usesO:
60 | uses = int(usesO.read())
61 | except FileNotFoundError:
62 | with open(uses_file, "w") as usesO:
63 | usesO.write("0")
64 | with open(uses_file) as usesO:
65 | uses = int(usesO.read())
66 | uses += 1
67 | with open(uses_file, "w") as usesO:
68 | usesO.write(str(uses))
69 |
70 |
71 | # Ask replay on messages with phone number
72 | @app.on_message(filters.regex(r"^[0-9+].*$"))
73 | def number_case(_, message: types.Message):
74 | message.reply(lang_msg(message, "ask_replay"), quote=True)
75 |
76 |
77 | @app.on_message(filters.reply & filters.create(
78 | lambda _, __, m: m.reply_to_message.text != lang_msg(m, "ask_replay")))
79 | def replay_url(_, message: types.Message):
80 | number = message.reply_to_message.text
81 | number = sub(r"[^0-9+]", "", number)
82 | ex = search(r'[0-9+].*', number)
83 |
84 | if not ex: # check if phone number invalid
85 | message.reply(lang_msg(message, "number_invalid"))
86 | return
87 |
88 | if len(number) > 15 or len(number) < 10: # check if is legal length number
89 | message.reply(lang_msg(message, "invalid_length"))
90 | return
91 |
92 | url = create_url(number, message.text)
93 | # send message with the url
94 | message.reply(lang_msg(message, "replay_url").format(f"`{url}`"),
95 | reply_markup=types.InlineKeyboardMarkup([[
96 | types.InlineKeyboardButton(lang_msg(message, "url_btn"), url=url),
97 | types.InlineKeyboardButton(lang_msg(message, "share_btn"),
98 | switch_inline_query=f"{number} {message.text}")
99 | ]]))
100 | save_user(message.from_user.id)
101 |
102 |
103 | valid_re = r"^(?P[0-9+]{10,16}) (?P.*)"
104 |
105 |
106 | # handle inline queries
107 | @app.on_inline_query(filters.regex(valid_re))
108 | def inline(_, query: types.InlineQuery):
109 | match = query.matches[0].groupdict()
110 | url = create_url(match['number'], match['text'])
111 |
112 | query.answer([types.InlineQueryResultArticle(
113 | title=f"{match['number']} • {match['text']}",
114 |
115 | input_message_content=types.InputTextMessageContent(
116 | lang_msg(query, "replay_url").format(f"`{url}`")
117 | ),
118 |
119 | reply_markup=types.InlineKeyboardMarkup([[
120 | types.InlineKeyboardButton(lang_msg(query, "url_btn"), url=url),
121 | types.InlineKeyboardButton(lang_msg(query, "share_btn"),
122 | switch_inline_query=f"{match['number']} {match['text']}")
123 | ]]),
124 |
125 | description=lang_msg(query, "replay_url").format(url),
126 |
127 | thumb_url="https://user-images.githubusercontent.com/42866208/129119407-17ea2432-7057-4501-8015-119c6da33bad.png"
128 | )])
129 | save_user(query.from_user.id)
130 |
131 |
132 | @app.on_inline_query(~filters.regex(valid_re))
133 | def valid_re(_, query: types.InlineQuery):
134 | query.answer([]
135 | , switch_pm_text=lang_msg(query, "input_sug"), switch_pm_parameter="help")
136 |
137 |
138 | # When user replay to replay msg instead of phone-num msg
139 | @app.on_message(filters.reply & filters.create(
140 | lambda _, __, m: m.reply_to_message.text == lang_msg(m, "ask_replay")))
141 | def do_not_replay_to_ask(_, message: types.Message):
142 | message.reply(lang_msg(message, "do_not_replay_to_ask"))
143 |
144 |
145 | # start command
146 | @app.on_message(filters.command(["start", "help", "translate"]) & filters.private)
147 | def start(_, message: types.Message):
148 | if message.command == ["start"]:
149 | txt = lang_msg(message, "start_msg").format(
150 | message.from_user.mention,
151 | "https://t.me/davidlev",
152 | "https://t.me/m100achuzBots",
153 | "https://t.me/robot_trick_channel"
154 | )
155 | message.reply(txt, disable_web_page_preview=True,
156 | reply_markup=types.InlineKeyboardMarkup([[
157 | types.InlineKeyboardButton(lang_msg(message, "repo"),
158 | url=lang_msg(message, "url_repo")),
159 | types.InlineKeyboardButton(lang_msg(message, "inline_btn"),
160 | switch_inline_query_current_chat="")
161 | ]]))
162 | elif "help" in message.command:
163 | message.reply(lang_msg(message, "help_msg"),
164 | reply_markup=types.InlineKeyboardMarkup([[
165 | types.InlineKeyboardButton(lang_msg(message, "inline_btn"),
166 | switch_inline_query_current_chat="")
167 | ]]))
168 | elif "translate" in message.command:
169 | message.reply(lang_msg(message, "translate"),
170 | reply_markup=types.InlineKeyboardMarkup([[
171 | types.InlineKeyboardButton(lang_msg(message, "repo"),
172 | url=f"{lang_msg(message, 'url_repo')}/blob/main/strings.py"),
173 | types.InlineKeyboardButton(lang_msg(message, "support"),
174 | url="https://t.me/RobotTrickSupport")
175 | ]]))
176 |
177 | save_user(message.from_user.id, False)
178 |
179 |
180 | app.run()
181 |
--------------------------------------------------------------------------------
/strings.py:
--------------------------------------------------------------------------------
1 | # Here you can add your language strings. just add on every dict new key with your language code and insert the value.
2 | # keep you're mind that languages are displayed accordingly to your client (app, software) lang.
3 |
4 | strings = {
5 | "ask_replay": {
6 | "en": "✍️ Reply to the phone-number-message with your text",
7 | "it": "✍️ Rispondi al messaggio del numero di telefono con il tuo testo",
8 | "he": "✍️ הגיבו להודעה שבה שלחתם את מספר הטלפון עם הטקסט שתרצו",
9 | "de": "✍️ Antworte zur Telefonnummer-Nachricht mit deinem Text",
10 | "es": "✍️ Responder al mensaje del número de teléfono con tu texto"
11 | },
12 | "number_invalid": {
13 | "en": "☎️ You can only reply on messages that contains phone number",
14 | "it": "☎️ Puoi rispondere solo a messaggi che contengono un numero di telefono",
15 | "he": "☎ ️ ניתן להגיב עם טקסט רק על הודעות שמכילות מספר טלפון",
16 | "de": "☎️ Du kannst nur Nachrichten wiedergeben, die eine Telefonnummer enthalten",
17 | "es": "☎️ Solo se puede responder a mensajes que contengan número de teléfono"
18 | },
19 | "invalid_length": {
20 | "en": "❌ Please input correct number (International format, for example +97212345678)",
21 | "it": "❌ Inserisci un numero corretto (formato internazionale, ad esempio +39123456789)",
22 | "he": "❌ הזינו מספר טלפון תקין בפורמט בינלאומי",
23 | "de": "❌ Bitte korrekte Nummer eingeben (Internationales Format, z.B. +491731234567)",
24 | "es": "❌ Por favor ingresa un número correcto (Formato internacional, por ejemplo: +97212345678)"
25 | },
26 | "replay_url": {
27 | "en": "Click here to get/copy your link: {}",
28 | "it": "Clicca qui per ottenere/copiare il link: {}",
29 | "he": "לחץ כאן כדי לקבל/להעתיק את הקישור: {}",
30 | "de": "Klicke hier, um deinen Link zu erhalten/kopieren: {}",
31 | "es": "Haz clic para obtener/copiar tu enlace: {}"
32 | },
33 | "url_btn": {
34 | "en": "🔗 Url",
35 | "it": "🔗 Link",
36 | "he": "🔗 לינק",
37 | "de": "🔗 Url",
38 | "es": "🔗 Enlace"
39 | },
40 | "share_btn": {
41 | "en": "♻️ Share",
42 | "it": "♻️ Condividi",
43 | "he": "♻️ שיתוף",
44 | "de": "♻️ Teilen",
45 | "es": "♻ Compartir"
46 | },
47 | "do_not_replay_to_ask": {
48 | "en": "💬 Please reply to message with phone number",
49 | "it": "💬 Rispondi al messaggio con il numero di teefono",
50 | "he": "💬 אנא הגב על הודעה שבה מופיע מספר טלפון",
51 | "de": "💬 Bitte wiederhole die Nachricht mit Telefonnummer",
52 | "es": "💬 Por favor responde al mensaje con número de teléfono"
53 | },
54 | "inline_btn": {
55 | "en": "🔁 Try inline!",
56 | "it": "🔁 Prova inline!",
57 | "he": "🔁 נסו באינליין!",
58 | "de": "🔁 Versuche es Inline!",
59 | "es": "🔁 Prueba el modo inline!"
60 | },
61 | "start_msg": {
62 | "en": "Hi {} 👋\n\n"
63 | "you can send me a phone number and text and I will return you a link that by clicking on it "
64 | "will "
65 | "be transferred to WhatsApp chat with the same number and with the text ready to send!\n"
66 | "You can also use me Inline! Type in the bot user followed by the phone number and text.\n"
67 | "\n- For help send /help"
68 | "\n- We need your help translating the bot! For more information send /translate"
69 | "\n\n- This bot made with ❤️ by [David Lev]({}) & [Yehuda By]({}) from [RobotTrick]({}) team.",
70 | "it": "Ciao {} 👋\n\n"
71 | "puoi inviarmi un numero di telefono e un messaggio e ti invierò un link che cliccandoci sopra "
72 | "verrai "
73 | "mandato su WhatsApp del numero e con il testo pronto per l'invio!\n"
74 | "Puoi anche usarmi Inline! Digita lo username del bot seguito dal numero di telefono e dal testo.\n "
75 | "\n- Per altro invia /help"
76 | "\n- Abbiamo bisogno del tuo aiuto per tradurre il bot! Per maggiori informazioni invia /translate"
77 | "\n\n- Questo bot è realizzato con il ❤️ da [David Lev]({}) e [Yehuda By]({}) dal team [RobotTrick]({}).",
78 | "he": "היי {} 👋\n\n"
79 | "תוכל לשלוח לי מספר טלפון וטקסט ואני אחזיר קישור שבלחיצה עליו תועבר לצ'אט וואטסאפ עם "
80 | "אותו "
81 | "המספר ועם הטקסט מוכן לשליחה.\n"
82 | "ניתן להשתמש בי גם באינליין! הקלד את יוזר הבוט ולאחריו את מספר הטלפון והטקסט."
83 | "\n\n- לעזרה שלחו /help"
84 | "\n- אנו זקוקים לעזרתכם בתרגום הבוט! למידע נוסף שלחו /translate"
85 | "\n\n- הבוט נוצר על ידי [David Lev]({}) & [Yehuda By]({}) מצוות [רובוטריק]({}).",
86 | "de": "Hallo {} 👋!\n\n"
87 | "Du kannst mir eine Telefonnummer und einen Text geben und ich werde dir einen Link senden, der beim anklicken "
88 | "in den WhatsApp-Chat mit der gleichen Nummer und dem fertigen Text übertragen wird!\n"
89 | "Du kannst mich auch Inline nutzen! Gib den Bot-Namen, gefolgt von der Telefonnummer und dem Text ein.\n"
90 | "\n- Für Hilfe sende /help"
91 | "\n- Wir brauchen deine Hilfe beim Übersetzen des Bots. Für mehr Informationen sende /translate!"
92 | "\n\n- Dieser Bot wurde mit ❤️ von [David Lev]({}) & [Yehuda By]({}) vom [RobotTrick]({}) Team erstellt",
93 | "es": "Hola {} 👋\n\n"
94 | "puedes enviarme un número de teléfono y un texto y te devolveré un enlace que al abrirlo "
95 | "te dirigirá "
96 | "a un chat de WhatsApp con ese número de teléfono y con el texto listo para enviar!\n"
97 | "Además puedes usarme Inline! Escribe el nombre de usuario del bot seguido del teléfono y el texto.\n"
98 | "\n- Por ayuda envía /help"
99 | "\n- Necesitamos tu ayuda para traducir el bot! Para más información envía /translate"
100 | "\n\n- Este bot fue hecho con ❤️ por [David Lev]({}) y [Yehuda By]({}) del equipo [RobotTrick]({})."
101 | },
102 | "repo": {
103 | "en": "🛠 GitHub",
104 | "it": "🛠 GitHub",
105 | "he": "🛠 גיטהאב",
106 | "de": "🛠 GitHub",
107 | "es": "🛠 GitHub"
108 | },
109 | "url_repo": {
110 | "en": "https://github.com/RobotTrick/WhatsApp-API-Bot"
111 | },
112 | "support": {
113 | "en": "👤 Support",
114 | "it": "👤 Supporto",
115 | "he": "👤 תמיכה",
116 | "de": "👤 Hilfe",
117 | "es": "👤 Soporte"
118 | },
119 | "input_sug": {
120 | "en": "Enter input like +97212345678 Hello from Telegram",
121 | "it": "Inserisci un input come +39123456789 Ciao da Telegram",
122 | "he": "הזינו טלפון וטקסט: 97212345678+ טקסט",
123 | "de": "Gib eine Nachricht wie z.B. +491731234567 Hello from Telegram ein.",
124 | "es": "Ingresa algo como: +97212345678 Hola desde Telegram"
125 | },
126 | "help_msg": {
127 | "en": "This bot allows you to create direct links to WhatsApp chats with text ready to send."
128 | "\n\nhere are two ways to use this bot:"
129 | "\n1. --Messages and Replies:--"
130 | "\n- Send the phone number."
131 | "\n- Reply on the **number message** with text to send."
132 | "\n- Get a link ready to click and to copy.\n"
133 | "\n\n2. --Using Inline:--"
134 | "\n- Type the bot username in any chat."
135 | "\n- After that type a phone number and immediately after it a text to send."
136 | "\n- Click on the result that will be displayed and you will get the link ready to click and to copy.",
137 | "it": "Questo bot ti consente di creare collegamenti diretti alle chat di WhatsApp con testo pronto per l'invio."
138 | "\n\necco due modi per usare questo bot:"
139 | "\n1. --Messaggi e risposte:--"
140 | "\n- Invia il numero di telefono."
141 | "\n- Rispondi al **messaggio numerico** con il testo da inviare."
142 | "\n- Ricevi un link da cliccare e copiare."
143 | "\n\n2. --Uso Inline:--"
144 | "\n- Digita lo username del bot in qualsiasi chat."
145 | "\n- Dopodiché digita un numero di telefono e subito dopo un messaggio da inviare."
146 | "\n- Fai clic sul risultato che verrà visualizzato e otterrai il collegamento pronto per fare clic e copiare.",
147 | "he": "רובוט זה מאפשר יצירת קישורים ישירים לצ'אט וואטסאפ עם טקסט מוכן לשליחה.\n"
148 | "קיימות שתי צורות שימוש בבוט:\n\n"
149 | "1. --הודעות ותגובות:--\n"
150 | "- שלחו את מספר הטלפון.\n"
151 | "- הגיבו על **המספר** עם טקסט לשליחה.\n"
152 | "- קבלו קישור מוכן להקלקה ולהעתקה.\n\n"
153 | "2. --שימוש באינליין:--\n"
154 | "- הקלידו את יוזר הבוט בכל צ'אט שתרצו.\n"
155 | "- לאחריו הקלידו מספר טלפון ומיד לאחריו טקסט לשליחה.\n"
156 | "- הקליקו על התוצאה שתוצג ותקבלו את הקישור.",
157 | "de": "Dieser Bot ermöglicht es dir, direkte Links zu WhatsApp Chats mit versandfertigem Text zu erstellen."
158 | "Es gibt zwei Möglichkeiten, diesen Bot zu nutzen:"
159 | "\n1. --Nachrichten und Wiederholungen:--"
160 | "\n- Sende die Telefonnummer."
161 | "\n- Antworte auf die **Nummernnachricht** mit Text zum Senden."
162 | "\n- Bereite einen Link zum Klicken und Kopieren vor.\n"
163 | "\n\n2. --Inline-Nutzung:--"
164 | "\n- Gib den Bot-Benutzernamen in einen beliebigen Chat ein."
165 | "\n- Tippe anschließend eine Telefonnummer und direkt einen Text zum senden ein."
166 | "\n- Klicke auf das Ergebnis, das angezeigt wird und du bekommst den Link zum Anklicken und Kopieren.",
167 | "es": "Este bot te permitirá crear links directos a chats de WhatsApp con texto listo para enviar."
168 | "\n\nhay dos formas de usar este bot:"
169 | "\n1. --Mensajes y Respuestas:--"
170 | "\n- Enviar el número de telefono (al que se desea enviar)."
171 | "\n- Responder al **mensaje con el número telefónico** con el texto a enviar."
172 | "\n- Obtener un enlace listo para tocar y copiar.\n"
173 | "\n\n2. --Usando Inline:--"
174 | "\n- Escribe el nombre de usuario del bot en cualquier chat (comenzando con @)."
175 | "\n- Después de eso escribir el número e inmediatamente después el texto a enviar."
176 | "\n- Toca en el resultado que se mostrará y ya tendrás el enlace listo para tocar y copiar."
177 | },
178 | "translate": {
179 | "en": "**🔡 We need your help translating the bot!**"
180 | "\n\nIf you are interested in translating the bot into your language or to another language, go to the "
181 | "strings file in GitHub, download it or edit it online and add the strings to the file according to the "
182 | "existing format. "
183 | "\n- Got tangled up, need help? Contact our support user.",
184 | "it": "**🔡 Abbiamo bisogno del tuo aiuto per tradurre il bot!**"
185 | "\n\nSe sei interessato a tradurre il bot nella tua lingua o in un'altra lingua, vai alle "
186 | "stringhe su GitHub, scaricalo o modificalo online e aggiungi le stringhe al file in base al "
187 | "formato esistente"
188 | "\n- Ti sei impasticciato, hai bisogno di aiuto? Contatta il nostro utente dell'assistenza."
189 | "\n\n㊗️Translate by @SebaBio",
190 | "he": "**🔡 אנו צריכים את עזרתכם בתרגום הבוט!**"
191 | "\n\nאם הנכם מעוניינים לתרגם את הבוט לשפתכם או לשפה אחרת, עברו לקובץ ההודעות בגיטהאב, הורידו אותו או "
192 | "ערכו "
193 | "באונליין והוסיפו את המחרוזות לקובץ על פי הפורמט הקיים. \n\n- הסתבכתם, זקוקים לעזרה? פנו למשתמש התמיכה "
194 | "שלנו. ",
195 | "de": "**🔡 Wir brauchen deine Hilfe bei der Übersetzung des Bots!**"
196 | "\n\nWenn du daran interessiert bist, den Bot in deine Sprache oder in eine andere Sprache zu "
197 | "übersetzen, gehe zu der "
198 | "Strings-Datei auf GitHub, lade sie herunter oder bearbeite sie online und füge die Strings gemäß dem "
199 | " bestehenden Format ein."
200 | " Hast du dich verirrt und brauchst Hilfe? Kontaktiere unseren Support."
201 | "\n\n㊗️Translate by @TLGRM_Support",
202 | "es": "**🔡 Necesitamos tu ayuda con la traducción del bot!**"
203 | "\n\nSi estás interesado/a en traducir el bot a tu idioma u otro, ve al "
204 | "archivo strings.py en GitHub, descargalo o editalo online y agrega las cadenas de texto siguiendo el "
205 | "formato existente. "
206 | "\n- Te perdiste, necesitas ayuda? Contacta a nuestro soporte."
207 | "\n\n㊗ Translate by @Dylan_22"
208 | }
209 | }
210 |
--------------------------------------------------------------------------------