diff --git a/Dockerfile b/Dockerfile index 247aa0c..521c881 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.10 +FROM python:3.10.8-slim-buster RUN apt update && apt upgrade -y RUN apt install git -y @@ -6,7 +6,8 @@ COPY requirements.txt /requirements.txt RUN cd / RUN pip3 install -U pip && pip3 install -U -r requirements.txt -RUN mkdir /Elsa WORKDIR /Elsa -COPY start.sh /start.sh -CMD ["/bin/bash", "/start.sh"] + +COPY . . + +CMD ["python3", "bot.py"] diff --git a/README.md b/README.md index a9dfb01..f559b0f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +[![Deploy To Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/soulpc/Elsa) + + +

Devil Botz

diff --git a/Script.py b/Script.py index 8719893..a4c0833 100644 --- a/Script.py +++ b/Script.py @@ -1,51 +1,57 @@ class script(object): - START_TXT = """๐™ท๐™ด๐™ป๐™ป๐™พ {}, -๐™ผ๐šˆ ๐™ฝ๐™ฐ๐™ผ๐™ด ๐™ธ๐š‚ {}, ๐™ธ ๐™ฒ๐™ฐ๐™ฝ ๐™ฟ๐š๐™พ๐š…๐™ธ๐™ณ๐™ด ๐™ผ๐™พ๐š…๐™ธ๐™ด๐š‚, ๐™น๐š„๐š‚๐šƒ ๐™ฐ๐™ณ๐™ณ ๐™ผ๐™ด ๐šƒ๐™พ ๐šˆ๐™พ๐š„๐š ๐™ถ๐š๐™พ๐š„๐™ฟ ๐™ฐ๐™ฝ๐™ณ ๐™ด๐™ฝ๐™น๐™พ๐šˆ""" + START_TXT = """Hแด‡สŸสŸแด {} - HELP_TXT = """๐™ท๐™ด๐šˆ {} -๐™ท๐™ด๐š๐™ด ๐™ธ๐š‚ ๐šƒ๐™ท๐™ด ๐™ท๐™ด๐™ป๐™ฟ ๐™ต๐™พ๐š ๐™ผ๐šˆ ๐™ฒ๐™พ๐™ผ๐™ผ๐™ฐ๐™ฝ๐™ณ๐š‚.""" - - -# โš ๏ธ Please don't change our credits ๐šƒ๐™ท๐™ฐ๐™ฝ๐™บ๐š‚ ๐šƒ๐™พ & ๐™ณ๐™ด๐š… ๐Ÿ‘‡๐Ÿป - - ABOUT_TXT = """โœฏ ๐™ผ๐šˆ ๐™ฝ๐™ฐ๐™ผ๐™ด: {} -โœฏ ๐™ฒ๐š๐™ด๐™ฐ๐šƒ๐™พ๐š: ๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผ -โœฏ ๐šƒ๐™ท๐™ฐ๐™ฝ๐™บ๐š‚ ๐šƒ๐™พ: Jแดแด‡สŸ แ ฐ TษขX -โœฏ ๐™ณ๐™ด๐š…: ใ€ŽDแด‡แด ษชสŸเฟTษขใ€ -โœฏ ๐™ป๐™ธ๐™ฑ๐š๐™ฐ๐š๐šˆ: ๐™ฟ๐šˆ๐š๐™พ๐™ถ๐š๐™ฐ๐™ผ -โœฏ ๐™ป๐™ฐ๐™ฝ๐™ถ๐š„๐™ฐ๐™ถ๐™ด: ๐™ฟ๐šˆ๐šƒ๐™ท๐™พ๐™ฝ ๐Ÿน -โœฏ ๐™ณ๐™ฐ๐šƒ๐™ฐ ๐™ฑ๐™ฐ๐š‚๐™ด: ๐™ผ๐™พ๐™ฝ๐™ถ๐™พ ๐™ณ๐™ฑ -โœฏ ๐™ฑ๐™พ๐šƒ ๐š‚๐™ด๐š๐š…๐™ด๐š: ๐™บ๐™พ๐šˆ๐™ด๐™ฑ -โœฏ ๐™ฑ๐š„๐™ธ๐™ป๐™ณ ๐š‚๐šƒ๐™ฐ๐šƒ๐š„๐š‚: v2.0.1 [ ๐™ฑ๐™ด๐šƒ๐™ฐ ]""" +เดŽเดจเตเดฑเต† เดชเดฃเดฟ เดŽเดจเตเดจเต เดชเดฑเดžเตเดžเดพเตฝ เดชเตเดคเดฟเดฏเดคเดพเดฏเดฟเดŸเตเดŸเต เดตเดฐเตเดจเตเดจ เดฎเต‚เดตเต€เดธเดฟเดจเตเดฑเต† เดฒเดฟเด™เตเด•เต เด‡เดŸเตเด•...! ARAKAL THERAVAD MOVIES, + GROUP OR BOT BUGE OR เดฎเต‚เดตเดฟ เดฒเดฟเด™เตเด•เต เด•เดฟเดŸเตเดŸเตเดจเตเดจเดฟเดฒเตเดฒ ANY PROMBLEM CONTACT #ADMIN @ARAKAL_THERAVAD_MOVIES_02_bot!!!""" + OWNER_TXT = """โŸโ”€โ”€โ”€[ แดแดกษดแด‡ส€ แด…แด‡แด›แด€ษชสŸ๊œฑ ]โ”€โ”€โ”€โŸ + +โ€ข ๊œฐแดœสŸสŸ ษดแด€แดแด‡ : ARAKAL THERAVAD MOVIES +โ€ข U๊œฑแด‡ส€ ษดแด€แดแด‡ : @ARAKAL_THERAVAD_MOVIES_02_bot +โ€ข Usแด‡ส€ ษชแด… : 1297128957 + +โˆ‚ฯƒะธ'ั‚ ะฒั” ฮฑfัฮฑฮนโˆ‚ ฯƒf ะฒั”ฮนะธg โˆ‚ฮนffั”ัั”ะธั‚, ะฒั” ฮฑfัฮฑฮนโˆ‚ ฯƒf ะฒั”ฮนะธg ั‚ะฝั” ั•ฮฑะผั” ฮฑั• ั”ฮฝั”ััƒฯƒะธั” ั”โ„“ั•ั” + """ + + ABOUT_TXT = """ARAKAL THERAVAD MOVIES + +โ€ข ฮทฮฑะผั” : ARAKAL THERAVAD MOVIES +โ€ข ฯ…ั•ั”ั ฮทฮฑะผั” : @ARAKAL_THERAVAD_MOVIES_02_bot +โ€ข ฯ…ั•ั”ั ฮนโˆ‚ : 1297128957 +โ€ข ฮนฮทั•ั‚ฮฑgัฮฑะผ : โ„“ฮนฮทะบ + +โˆ‚ฯƒะธ'ั‚ ะฒั” ฮฑfัฮฑฮนโˆ‚ ฯƒf ะฒั”ฮนะธg โˆ‚ฮนffั”ัั”ะธั‚, ะฒั” ฮฑfัฮฑฮนโˆ‚ ฯƒf ะฒั”ฮนะธg ั‚ะฝั” ั•ฮฑะผั” ฮฑั• ั”ฮฝั”ััƒฯƒะธั” ั”โ„“ั•ั” + """ + + HELP_TXT = """Hแด‡ส {} Fส€ษชแด‡ษดแด… Hแด‡ส€แด‡ Yแดแดœส€ Bแดœแด›แด›แดษดs ๐Ÿ‘‡""" SOURCE_TXT = """NOTE: - ๐™ด๐™ป๐š‚๐™ฐ ๐™ธ๐š‚ ๐™พ๐™ฟ๐™ด๐™ฝ ๐š‚๐™พ๐š„๐š๐™ฒ๐™ด ๐™ฟ๐š๐™พ๐™น๐™ด๐™ฒ๐šƒ. - ๐š‚๐™พ๐š„๐š๐™ฒ๐™ด - ๐™ฒ๐™ป๐™ธ๐™ฒ๐™บ ๐š๐™ด๐™ฟ๐™พ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ DEVS: -- ๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผ""" +- ARAKAL_THERAVAD_MOVIES.๐™ฒ๐™พ๐™ผ""" MANUELFILTER_TXT = """Help: Filters - ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š ๐™ธ๐š‚ ๐šƒ๐™ท๐™ด ๐™ต๐™ด๐™ฐ๐šƒ๐š„๐š๐™ด ๐š†๐™ด๐š๐™ด ๐š„๐š‚๐™ด๐š๐š‚ ๐™ฒ๐™ฐ๐™ฝ ๐š‚๐™ด๐šƒ ๐™ฐ๐š„๐šƒ๐™พ๐™ผ๐™ฐ๐šƒ๐™ด๐™ณ ๐š๐™ด๐™ฟ๐™ป๐™ธ๐™ด๐š‚ ๐™ต๐™พ๐š ๐™ฐ ๐™ฟ๐™ฐ๐š๐šƒ๐™ธ๐™ฒ๐š„๐™ป๐™ฐ๐š ๐™บ๐™ด๐šˆ๐š†๐™พ๐š๐™ณ ๐™ฐ๐™ฝ๐™ณ ๐™ด๐™ป๐š‚๐™ฐ ๐š†๐™ธ๐™ป๐™ป ๐š๐™ด๐š‚๐™ฟ๐™พ๐™ฝ๐™ณ ๐š†๐™ท๐™ด๐™ฝ๐™ด๐š…๐™ด๐š ๐™ฐ ๐™บ๐™ด๐šˆ๐š†๐™พ๐š๐™ณ ๐™ธ๐š‚ ๐™ต๐™พ๐š„๐™ฝ๐™ณ ๐šƒ๐™ท๐™ด ๐™ผ๐™ด๐š‚๐š‚๐™ฐ๐™ถ๐™ด NOTE: -๐Ÿท. ๐™ด๐™ป๐š‚๐™ฐ ๐š‚๐™ท๐™พ๐š„๐™ป๐™ณ ๐™ท๐™ฐ๐š…๐™ด ๐™ฐ๐™ณ๐™ผ๐™ธ๐™ฝ ๐™ฟ๐š๐™ธ๐š…๐™ธ๐™ป๐™ป๐™ฐ๐™ถ๐™ด. -๐Ÿธ. ๐™พ๐™ฝ๐™ป๐šˆ ๐™ฐ๐™ณ๐™ผ๐™ธ๐™ฝ๐š‚ ๐™ฒ๐™ฐ๐™ฝ ๐™ฐ๐™ณ๐™ณ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š๐š‚ ๐™ธ๐™ฝ ๐™ฐ ๐™ฒ๐™ท๐™ฐ๐šƒ. -๐Ÿน. ๐™ฐ๐™ป๐™ด๐š๐šƒ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐™ท๐™ฐ๐š…๐™ด ๐™ฐ ๐™ป๐™ธ๐™ผ๐™ธ๐šƒ ๐™พ๐™ต ๐Ÿผ๐Ÿบ ๐™ฒ๐™ท๐™ฐ๐š๐™ฐ๐™ฒ๐šƒ๐™ด๐š๐š‚. + ๐™ด๐™ป๐š‚๐™ฐ ๐š‚๐™ท๐™พ๐š„๐™ป๐™ณ ๐™ท๐™ฐ๐š…๐™ด ๐™ฐ๐™ณ๐™ผ๐™ธ๐™ฝ ๐™ฟ๐š๐™ธ๐š…๐™ธ๐™ป๐™ป๐™ฐ๐™ถ๐™ด. + ๐™พ๐™ฝ๐™ป๐šˆ ๐™ฐ๐™ณ๐™ผ๐™ธ๐™ฝ๐š‚ ๐™ฒ๐™ฐ๐™ฝ ๐™ฐ๐™ณ๐™ณ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š๐š‚ ๐™ธ๐™ฝ ๐™ฐ ๐™ฒ๐™ท๐™ฐ๐šƒ. + ๐™ฐ๐™ป๐™ด๐š๐šƒ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐™ท๐™ฐ๐š…๐™ด ๐™ฐ ๐™ป๐™ธ๐™ผ๐™ธ๐šƒ ๐™พ๐™ต ๐™ฒ๐™ท๐™ฐ๐š๐™ฐ๐™ฒ๐šƒ๐™ด๐š๐š‚. Commands and Usage: -โ€ข /filter - add a filter in chat -โ€ข /filters - list all the filters of a chat -โ€ข /del - delete a specific filter in chat -โ€ข /delall - delete the whole filters in a chat (chat owner only)""" + /filter - add a filter in chat + /filters - list all the filters of a chat + /del - delete a specific filter in chat + /delall - delete the whole filters in a chat (chat owner only)""" BUTTON_TXT = """Help: Buttons ๐™ด๐™ป๐š‚๐™ฐ ๐š‚๐š„๐™ฟ๐™ฟ๐™พ๐š๐šƒ๐š‚ ๐™ฑ๐™พ๐šƒ๐™ท ๐š„๐š๐™ป ๐™ฐ๐™ฝ๐™ณ ๐™ฐ๐™ป๐™ด๐š๐šƒ ๐™ธ๐™ฝ๐™ป๐™ธ๐™ฝ๐™ด ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚. NOTE: -๐Ÿท. ๐šƒ๐™ด๐™ป๐™ด๐™ถ๐š๐™ฐ๐™ผ ๐š†๐™ธ๐™ป๐™ป ๐™ฝ๐™พ๐šƒ ๐™ฐ๐™ป๐™ป๐™พ๐š†๐š‚ ๐šˆ๐™พ๐š„ ๐šƒ๐™พ ๐š‚๐™ด๐™ฝ๐™ณ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐š†๐™ธ๐šƒ๐™ท๐™พ๐š„๐šƒ ๐™ฐ๐™ฝ๐šˆ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ด๐™ฝ๐šƒ, ๐š‚๐™พ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ด๐™ฝ๐šƒ ๐™ธ๐š‚ ๐™ผ๐™ฐ๐™ฝ๐™ณ๐™ฐ๐šƒ๐™พ๐š๐šˆ. -๐Ÿธ. ๐™ด๐™ป๐š‚๐™ฐ ๐š‚๐š„๐™ฟ๐™ฟ๐™พ๐š๐šƒ๐š‚ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐š†๐™ธ๐šƒ๐™ท ๐™ฐ๐™ฝ๐šˆ ๐šƒ๐™ด๐™ป๐™ด๐™ถ๐š๐™ฐ๐™ผ ๐™ผ๐™ด๐™ณ๐™ธ๐™ฐ ๐šƒ๐šˆ๐™ฟ๐™ด. -๐Ÿน. ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐š‚๐™ท๐™พ๐š„๐™ป๐™ณ ๐™ฑ๐™ด ๐™ฟ๐š๐™พ๐™ฟ๐™ด๐š๐™ป๐šˆ ๐™ฟ๐™ฐ๐š๐š‚๐™ด๐™ณ ๐™ฐ๐š‚ ๐™ผ๐™ฐ๐š๐™บ๐™ณ๐™พ๐š†๐™ฝ ๐™ต๐™พ๐š๐™ผ๐™ฐ๐šƒ + ๐šƒ๐™ด๐™ป๐™ด๐™ถ๐š๐™ฐ๐™ผ ๐š†๐™ธ๐™ป๐™ป ๐™ฝ๐™พ๐šƒ ๐™ฐ๐™ป๐™ป๐™พ๐š†๐š‚ ๐šˆ๐™พ๐š„ ๐šƒ๐™พ ๐š‚๐™ด๐™ฝ๐™ณ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐š†๐™ธ๐šƒ๐™ท๐™พ๐š„๐šƒ ๐™ฐ๐™ฝ๐šˆ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ด๐™ฝ๐šƒ, ๐š‚๐™พ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ด๐™ฝ๐šƒ ๐™ธ๐š‚ ๐™ผ๐™ฐ๐™ฝ๐™ณ๐™ฐ๐šƒ๐™พ๐š๐šˆ. + ๐™ด๐™ป๐š‚๐™ฐ ๐š‚๐š„๐™ฟ๐™ฟ๐™พ๐š๐šƒ๐š‚ ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐š†๐™ธ๐šƒ๐™ท ๐™ฐ๐™ฝ๐šˆ ๐šƒ๐™ด๐™ป๐™ด๐™ถ๐š๐™ฐ๐™ผ ๐™ผ๐™ด๐™ณ๐™ธ๐™ฐ ๐šƒ๐šˆ๐™ฟ๐™ด. + ๐™ฑ๐š„๐šƒ๐šƒ๐™พ๐™ฝ๐š‚ ๐š‚๐™ท๐™พ๐š„๐™ป๐™ณ ๐™ฑ๐™ด ๐™ฟ๐š๐™พ๐™ฟ๐™ด๐š๐™ป๐šˆ ๐™ฟ๐™ฐ๐š๐š‚๐™ด๐™ณ ๐™ฐ๐š‚ ๐™ผ๐™ฐ๐š๐™บ๐™ณ๐™พ๐š†๐™ฝ ๐™ต๐™พ๐š๐™ผ๐™ฐ๐šƒ URL buttons: [Button Text](buttonurl:https://t.me/Example...) @@ -55,14 +61,13 @@ class script(object): AUTOFILTER_TXT = """Help: Auto Filter NOTE: -๐Ÿท. ๐™ผ๐™ฐ๐™บ๐™ด ๐™ผ๐™ด ๐šƒ๐™ท๐™ด ๐™ฐ๐™ณ๐™ผ๐™ธ๐™ฝ ๐™พ๐™ต ๐šˆ๐™พ๐š„๐š ๐™ฒ๐™ท๐™ฐ๐™ฝ๐™ฝ๐™ด๐™ป ๐™ธ๐™ต ๐™ธ๐šƒ'๐š‚ ๐™ฟ๐š๐™ธ๐š…๐™ฐ๐šƒ๐™ด. -๐Ÿธ. ๐™ผ๐™ฐ๐™บ๐™ด ๐š‚๐š„๐š๐™ด ๐šƒ๐™ท๐™ฐ๐šƒ ๐šˆ๐™พ๐š„๐š ๐™ฒ๐™ท๐™ฐ๐™ฝ๐™ฝ๐™ด๐™ป ๐™ณ๐™พ๐™ด๐š‚ ๐™ฝ๐™พ๐šƒ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ฐ๐™ธ๐™ฝ๐š‚ ๐™ฒ๐™ฐ๐™ผ๐š๐™ธ๐™ฟ๐š‚, ๐™ฟ๐™พ๐š๐™ฝ ๐™ฐ๐™ฝ๐™ณ ๐™ต๐™ฐ๐™บ๐™ด ๐™ต๐™ธ๐™ป๐™ด๐š‚. -๐Ÿน. ๐™ต๐™พ๐š๐š†๐™ฐ๐š๐™ณ ๐šƒ๐™ท๐™ด ๐™ป๐™ฐ๐š‚๐šƒ ๐™ผ๐™ด๐š‚๐š‚๐™ฐ๐™ถ๐™ด ๐šƒ๐™พ ๐™ผ๐™ด ๐š†๐™ธ๐šƒ๐™ท ๐š€๐š„๐™พ๐šƒ๐™ด๐š‚. - ๐™ธ'๐™ป๐™ป ๐™ฐ๐™ณ๐™ณ ๐™ฐ๐™ป๐™ป ๐šƒ๐™ท๐™ด ๐™ต๐™ธ๐™ป๐™ด๐š‚ ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ฐ๐šƒ ๐™ฒ๐™ท๐™ฐ๐™ฝ๐™ฝ๐™ด๐™ป ๐šƒ๐™พ ๐™ผ๐šˆ ๐™ณ๐™ฑ. -โ˜… /set_template - ๐š‚๐™ด๐šƒ ๐™ฒ๐š„๐š‚๐šƒ๐™พ๐™ผ ๐™ธ๐™ผ๐™ณ๐™ฑ ๐šƒ๐™ด๐™ผ๐™ฟ๐™ป๐™ฐ๐šƒ๐™ด ๐™ต๐™พ๐š ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š. -โ˜… /get_template - ๐™ถ๐™ด๐šƒ ๐™ฒ๐š„๐š๐š๐™ด๐™ฝ๐šƒ ๐™ธ๐™ผ๐™ณ๐™ฑ ๐šƒ๐™ด๐™ผ๐™ฟ๐™ป๐™ฐ๐šƒ๐™ด ๐™พ๐™ต ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š. -โ˜… /autofilter on - ๐™ด๐™ฝ๐™ฐ๐™ฑ๐™ป๐™ด ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ด ๐™ถ๐š๐™พ๐š„๐™ฟ๐š‚. -โ˜… /autofilter off - ๐™ณ๐™ธ๐š‚๐™ฐ๐™ฑ๐™ป๐™ด๐™ณ ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ด ๐™ถ๐š๐™พ๐š„๐™ฟ๐š‚.""" + + ๐™ผ๐™ฐ๐™บ๐™ด ๐š‚๐š„๐š๐™ด ๐šƒ๐™ท๐™ฐ๐šƒ ๐šˆ๐™พ๐š„๐š ๐™ฒ๐™ท๐™ฐ๐™ฝ๐™ฝ๐™ด๐™ป ๐™ณ๐™พ๐™ด๐š‚ ๐™ฝ๐™พ๐šƒ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ฐ๐™ธ๐™ฝ๐š‚ ๐™ฒ๐™ฐ๐™ผ๐š๐™ธ๐™ฟ๐š‚, ๐™ฟ๐™พ๐š๐™ฝ ๐™ฐ๐™ฝ๐™ณ ๐™ต๐™ฐ๐™บ๐™ด ๐™ต๐™ธ๐™ป๐™ด๐š‚. + ๐™ต๐™พ๐š๐š†๐™ฐ๐š๐™ณ ๐šƒ๐™ท๐™ด ๐™ป๐™ฐ๐š‚๐šƒ ๐™ผ๐™ด๐š‚๐š‚๐™ฐ๐™ถ๐™ด ๐šƒ๐™พ ๐™ผ๐™ด ๐š†๐™ธ๐šƒ๐™ท ๐š€๐š„๐™พ๐šƒ๐™ด๐š‚. + /set_template - ๐š‚๐™ด๐šƒ ๐™ฒ๐š„๐š‚๐šƒ๐™พ๐™ผ ๐™ธ๐™ผ๐™ณ๐™ฑ ๐šƒ๐™ด๐™ผ๐™ฟ๐™ป๐™ฐ๐šƒ๐™ด ๐™ต๐™พ๐š ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š. + /get_template - ๐™ถ๐™ด๐šƒ ๐™ฒ๐š„๐š๐š๐™ด๐™ฝ๐šƒ ๐™ธ๐™ผ๐™ณ๐™ฑ ๐šƒ๐™ด๐™ผ๐™ฟ๐™ป๐™ฐ๐šƒ๐™ด ๐™พ๐™ต ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š. + /autofilter on - ๐™ด๐™ฝ๐™ฐ๐™ฑ๐™ป๐™ด ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ด ๐™ถ๐š๐™พ๐š„๐™ฟ๐š‚. + /autofilter off - ๐™ณ๐™ธ๐š‚๐™ฐ๐™ฑ๐™ป๐™ด๐™ณ ๐™ฐ๐š„๐šƒ๐™พ ๐™ต๐™ธ๐™ป๐šƒ๐™ด๐š ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ด ๐™ถ๐š๐™พ๐š„๐™ฟ๐š‚.""" CONNECTION_TXT = """Help: Connections @@ -70,13 +75,13 @@ class script(object): - it helps to avoid spamming in groups. NOTE: -1. Only admins can add a connection. -2. Send /connect for connecting me to ur PM + Only admins can add a connection. + Send /connect for connecting me to ur PM Commands and Usage: -โ€ข /connect - connect a particular chat to your PM -โ€ข /disconnect - disconnect from a chat -โ€ข /connections - list all your connections""" + /connect - connect a particular chat to your PM + /disconnect - disconnect from a chat + /connections - list all your connections""" EXTRAMOD_TXT = """Help: Extra Modules @@ -84,10 +89,10 @@ class script(object): these are the extra features of Elsa Commands and Usage: -โ€ข /id - get id of a specified user. -โ€ข /info - get information about a user. -โ€ข /imdb - get the film information from IMDb source. -โ€ข /search - get the film information from various sources.""" + /id - get id of a specified user. + /info - get information about a user. + /imdb - get the film information from IMDb source. + /search - get the film information from various sources.""" SONG_TXT = """๐š‚๐™พ๐™ฝ๐™ถ ๐™ณ๐™พ๐š†๐™ฝ๐™ป๐™พ๐™ฐ๐™ณ ๐™ผ๐™พ๐™ณ๐š„๐™ป๐™ด @@ -95,89 +100,88 @@ class script(object): ๐™ฒ๐™พ๐™ผ๐™ผ๐™ฐ๐™ฝ๐™ณ๐š‚ -โญ๏ธ /song ๐š‚๐™พ๐™ฝ๐™ถ ๐™ฝ๐™ฐ๐™ผ๐™ด + /song ๐š‚๐™พ๐™ฝ๐™ถ ๐™ฝ๐™ฐ๐™ผ๐™ด ๐š†๐™พ๐š๐™บ๐š‚ ๐™ฑ๐™พ๐šƒ๐™ท ๐™ถ๐š๐™พ๐š„๐™ฟ ๐™ฐ๐™ฝ๐™ณ ๐™ฟ๐™ผ -@๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผ""" +@ARAKAL_THERAVAD_MOVIES""" VIDEO_TXT ="""๐™ท๐™ด๐™ป๐™ฟ ๐šˆ๐™พ๐š„ ๐šƒ๐™พ ๐™ณ๐™พ๐š†๐™ฝ๐™ป๐™พ๐™ฐ๐™ณ ๐š…๐™ธ๐™ณ๐™ด๐™พ ๐™ต๐š๐™พ๐™ผ ๐šˆ๐™พ๐š„๐šƒ๐š„๐™ฑ๐™ด. -โ€ข ๐˜œ๐˜ด๐˜ข๐˜จ๐˜ฆ + ๐˜œ๐˜ด๐˜ข๐˜จ๐˜ฆ ๐˜ ๐˜ฐ๐˜ถ ๐˜Š๐˜ข๐˜ฏ ๐˜‹๐˜ฐ๐˜ธ๐˜ฏ๐˜ญ๐˜ฐ๐˜ข๐˜ฅ ๐˜ˆ๐˜ฏ๐˜บ ๐˜๐˜ช๐˜ฅ๐˜ฆ๐˜ฐ ๐˜๐˜ณ๐˜ฐ๐˜ฎ ๐˜ ๐˜ฐ๐˜ถ๐˜ต๐˜ถ๐˜ฃ๐˜ฆ ๐™ƒ๐™ค๐™ฌ ๐™๐™ค ๐™๐™จ๐™š -โ€ข ๐˜›๐˜บ๐˜ฑ๐˜ฆ /video or /mp4 ๐˜ˆ๐˜ฏ๐˜ฅ (https://youtu.be/example...) -โ€ข ๐˜Œ๐˜น๐˜ข๐˜ฎ๐˜ฑ๐˜ญ๐˜ฆ: + ๐˜›๐˜บ๐˜ฑ๐˜ฆ /video or /mp4 ๐˜ˆ๐˜ฏ๐˜ฅ (https://youtu.be/example...) + ๐˜Œ๐˜น๐˜ข๐˜ฎ๐˜ฑ๐˜ญ๐˜ฆ: /mp4 https://youtu.be/example... /video https://youtu.be/example...""" - TTS_TXT = """Help: TTS ๐ŸŽค module: + TTS_TXT = """Help: TTS module: Translate text to speech Commands and Usage: -โ€ข /tts : convert text to speech""" + /tts : convert text to speech""" - GTRANS_TXT = """โžค ๐‡๐ž๐ฅ๐ฉ: ๐–ฆ๐—ˆ๐—ˆ๐—€๐—…๐–พ ๐–ณ๐—‹๐–บ๐—‡๐—Œ๐—…๐–บ๐—๐–พ๐—‹ -๐šƒ๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š ๐š‘๐šŽ๐š•๐š™๐šœ ๐šข๐š˜๐šž ๐š๐š˜ ๐š๐š›๐šŠ๐š—๐šœ๐š•๐šŠ๐š๐šŽ ๐šŠ ๐š๐šŽ๐šก๐š ๐š๐š˜ ๐–บ๐—‡๐—’ ๐š•๐šŠ๐š—๐š๐šž๐šŠ๐š๐šŽ๐šœ ๐šข๐š˜๐šž ๐š ๐šŠ๐š—๐š. ๐šƒ๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š ๐š ๐š˜๐š›๐š”๐šœ ๐š˜๐š— ๐š‹๐š˜๐š๐š‘ ๐š™๐š– ๐šŠ๐š—๐š ๐š๐š›๐š˜๐šž๐š™ โœฏ -โžค ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: -โžช/tr - ๐–ณ๐—ˆ ๐—๐—‹๐–บ๐—‡๐—Œ๐—…๐–บ๐—๐–พ๐—‹ ๐—๐–พ๐—‘๐—๐—Œ ๐—๐—ˆ ๐–บ ๐—Œ๐—‰๐–พ๐–ผ๐—‚๐–ฟ๐–ผ ๐—…๐–บ๐—‡๐—€๐—Ž๐–บ๐—€๐–พ -โžค ๐–ญ๐—ˆ๐—๐–พ: + GTRANS_TXT = """ ๐‡๐ž๐ฅ๐ฉ: ๐–ฆ๐—ˆ๐—ˆ๐—€๐—…๐–พ ๐–ณ๐—‹๐–บ๐—‡๐—Œ๐—…๐–บ๐—๐–พ๐—‹ +๐šƒ๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š ๐š‘๐šŽ๐š•๐š™๐šœ ๐šข๐š˜๐šž ๐š๐š˜ ๐š๐š›๐šŠ๐š—๐šœ๐š•๐šŠ๐š๐šŽ ๐šŠ ๐š๐šŽ๐šก๐š ๐š๐š˜ ๐–บ๐—‡๐—’ ๐š•๐šŠ๐š—๐š๐šž๐šŠ๐š๐šŽ๐šœ ๐šข๐š˜๐šž ๐š ๐šŠ๐š—๐š. ๐šƒ๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š ๐š ๐š˜๐š›๐š”๐šœ ๐š˜๐š— ๐š‹๐š˜๐š๐š‘ ๐š™๐š– ๐šŠ๐š—๐š ๐š๐š›๐š˜๐šž๐š™ + ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: +/tr - ๐–ณ๐—ˆ ๐—๐—‹๐–บ๐—‡๐—Œ๐—…๐–บ๐—๐–พ๐—‹ ๐—๐–พ๐—‘๐—๐—Œ ๐—๐—ˆ ๐–บ ๐—Œ๐—‰๐–พ๐–ผ๐—‚๐–ฟ๐–ผ ๐—…๐–บ๐—‡๐—€๐—Ž๐–บ๐—€๐–พ + ๐–ญ๐—ˆ๐—๐–พ: ๐–ถ๐—๐—‚๐—…๐–พ ๐—Ž๐—Œ๐—‚๐—‡๐—€ /tr ๐—’๐—ˆ๐—Ž ๐—Œ๐—๐—ˆ๐—Ž๐—…๐–ฝ ๐—Œ๐—‰๐–พ๐–ผ๐—‚๐–ฟ๐—’ ๐—๐—๐–พ ๐—…๐–บ๐—‡๐—€๐—Ž๐–บ๐—€๐–พ ๐–ผ๐—ˆ๐–ฝ๐–พ -โž›๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ: /๐—๐—‹ ๐—†๐—… -โ€ข ๐–พ๐—‡ = ๐–ค๐—‡๐—€๐—…๐—‚๐—Œ๐— -โ€ข ๐—†๐—… = ๐–ฌ๐–บ๐—…๐–บ๐—’๐–บ๐—…๐–บ๐—† -โ€ข ๐—๐—‚ = ๐–ง๐—‚๐—‡๐–ฝ๐—‚""" +๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ: /๐—๐—‹ ๐—†๐—… + ๐–พ๐—‡ = ๐–ค๐—‡๐—€๐—…๐—‚๐—Œ๐— + ๐—†๐—… = ๐–ฌ๐–บ๐—…๐–บ๐—’๐–บ๐—…๐–บ๐—† + ๐—๐—‚ = ๐–ง๐—‚๐—‡๐–ฝ๐—‚""" - TELE_TXT = """โ–ซ๏ธHELP: Telegraphโ–ช๏ธ + TELE_TXT = """HELP: Telegraph Do as you wish with telegra.ph module! USAGE: -โœ’๏ธ /telegraph - Send me Picture or Vide Under (5MB) NOTE: -โ€ข This Command Is Available in goups and pms -โ€ข This Command Can be used by everyone""" + This Command Is Available in goups and pms + This Command Can be used by everyone""" - CORONA_TXT = """โžค ๐‡๐ž๐ฅ๐ฉ: ๐–ข๐—ˆ๐—๐—‚๐–ฝ + CORONA_TXT = """ ๐‡๐ž๐ฅ๐ฉ: ๐–ข๐—ˆ๐—๐—‚๐–ฝ ๐šƒ๐š‘๐š’๐šœ ๐™ฒ๐š˜๐š–๐š–๐šŠ๐š—๐š ๐š‘๐šŽ๐š•๐š™๐šœ ๐šข๐š˜๐šž ๐š๐š˜ ๐š”๐š—๐š˜๐š  ๐š๐šŠ๐š’๐š•๐šข ๐š’๐š—๐š๐š˜๐š›๐š–๐šŠ๐š๐š’๐š˜๐š— ๐šŠ๐š‹๐š˜๐šž๐š ๐šŒ๐š˜๐šŸ๐š’๐š -โžค ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: -โžช /covid - ๐—Ž๐—Œ๐–พ ๐—๐—๐—‚๐—Œ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ ๐—๐—‚๐—๐— ๐—’๐—ˆ๐—Ž๐—‹ ๐–ผ๐—ˆ๐—Ž๐—‡๐—๐—‹๐—’ ๐—‡๐–บ๐—†๐–พ ๐—๐—ˆ ๐—€๐–พ๐— ๐–ผ๐—ˆ๐—๐—‚๐–ฝ๐–พ ๐—‚๐—‡๐–ฟ๐—ˆ๐—‹๐—†๐–บ๐—๐—‚๐—ˆ๐—‡ -โž›๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ: + ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: + /covid - ๐—Ž๐—Œ๐–พ ๐—๐—๐—‚๐—Œ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ ๐—๐—‚๐—๐— ๐—’๐—ˆ๐—Ž๐—‹ ๐–ผ๐—ˆ๐—Ž๐—‡๐—๐—‹๐—’ ๐—‡๐–บ๐—†๐–พ ๐—๐—ˆ ๐—€๐–พ๐— ๐–ผ๐—ˆ๐—๐—‚๐–ฝ๐–พ ๐—‚๐—‡๐–ฟ๐—ˆ๐—‹๐—†๐–บ๐—๐—‚๐—ˆ๐—‡ +๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ: /covid ๐–จ๐—‡๐–ฝ๐—‚๐–บ -โš ๏ธ This service has been stopped""" + This service has been stopped""" - ABOOK_TXT = """โžค ๐‡๐ž๐ฅ๐ฉ: ๐– ๐—Ž๐–ฝ๐—‚๐—ˆ๐–ป๐—ˆ๐—ˆ๐—„ -๐šˆ๐š˜๐šž ๐šŒ๐šŠ๐š— ๐šŒ๐š˜๐š—๐šŸ๐šŽ๐š›๐š ๐šŠ ๐™ฟ๐™ณ๐™ต ๐š๐š’๐š•๐šŽ ๐š๐š˜ ๐šŠ ๐šŠ๐šž๐š๐š’๐š˜ ๐š๐š’๐š•๐šŽ ๐š ๐š’๐š๐š‘ ๐š๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š โœฏ -โžค ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: -โžช /audiobook: ๐–ฑ๐–พ๐—‰๐—…๐—’ ๐—๐—๐—‚๐—Œ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ ๐—๐—ˆ ๐–บ๐—‡๐—’ ๐–ฏ๐–ฃ๐–ฅ ๐—๐—ˆ ๐—€๐–พ๐—‡๐–พ๐—‹๐–บ๐—๐–พ ๐—๐—๐–พ ๐–บ๐—Ž๐–ฝ๐—‚๐—ˆ""" + ABOOK_TXT = """ ๐‡๐ž๐ฅ๐ฉ: ๐– ๐—Ž๐–ฝ๐—‚๐—ˆ๐–ป๐—ˆ๐—ˆ๐—„ +๐šˆ๐š˜๐šž ๐šŒ๐šŠ๐š— ๐šŒ๐š˜๐š—๐šŸ๐šŽ๐š›๐š ๐šŠ ๐™ฟ๐™ณ๐™ต ๐š๐š’๐š•๐šŽ ๐š๐š˜ ๐šŠ ๐šŠ๐šž๐š๐š’๐š˜ ๐š๐š’๐š•๐šŽ ๐š ๐š’๐š๐š‘ ๐š๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š + ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: + /audiobook: ๐–ฑ๐–พ๐—‰๐—…๐—’ ๐—๐—๐—‚๐—Œ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ ๐—๐—ˆ ๐–บ๐—‡๐—’ ๐–ฏ๐–ฃ๐–ฅ ๐—๐—ˆ ๐—€๐–พ๐—‡๐–พ๐—‹๐–บ๐—๐–พ ๐—๐—๐–พ ๐–บ๐—Ž๐–ฝ๐—‚๐—ˆ""" DEPLOY_TXT= """๐™ธ๐™ต ๐šˆ๐™พ๐š„ ๐™ต๐™ฐ๐™ฒ๐™ธ๐™ฝ๐™ถ ๐™ฐ๐™ฝ๐šˆ ๐™ธ๐š‚๐š‚๐š„๐™ด ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ด ๐š๐™ด๐™ฟ๐™พ ๐™ฒ๐™พ๐™ฝ๐šƒ๐™ฐ๐™ฒ๐šƒ ๐™ผ๐™ด...""" PINGS_TXT = """Ping Testing: -Helps you to know your ping ๐Ÿšถ๐Ÿผโ€โ™‚๏ธ +Helps you to know your ping Commands: -โ€ข /alive - To check you are alive. -โ€ข /help - To get help. + /alive - To check you are alive. + /help - To get help. -โ€ข /ping - To get your ping. + /ping - To get your ping. -๐Ÿ› ๏ธUsage๐Ÿ› ๏ธ : -โ€ข This commands can be used in pm and groups -โ€ข This commands can be used buy everyone in the groups and bots pm -โ€ข Share us for more features""" + Usage : + This commands can be used in pm and groups + This commands can be used buy everyone in the groups and bots pm + Share us for more features""" STICKER_TXT = """๐šˆ๐™พ๐š„ ๐™ฒ๐™ฐ๐™ฝ ๐š„๐š‚๐™ด ๐šƒ๐™ท๐™ธ๐š‚ ๐™ผ๐™พ๐™ณ๐š„๐™ป๐™ด ๐šƒ๐™พ ๐™ต๐™ธ๐™ฝ๐™ณ ๐™ฐ๐™ฝ๐šˆ ๐š‚๐šƒ๐™ธ๐™ฒ๐™บ๐™ด๐š๐š‚ ๐™ธ๐™ณ. -โ€ข ๐”๐’๐€๐†๐„ + ๐”๐’๐€๐†๐„ To Get Sticker ID - โญ• ๐™ƒ๐™ค๐™ฌ ๐™๐™ค ๐™๐™จ๐™š + ๐™ƒ๐™ค๐™ฌ ๐™๐™ค ๐™๐™จ๐™š -โ—‰ Reply To Any Sticker [/stickerid]""" + Reply To Any Sticker [/stickerid]""" - FONT_TXT= """โš™๏ธ ๐”๐’๐€๐†๐„ + FONT_TXT= """ ๐”๐’๐€๐†๐„ ๐˜๐Ž๐” ๐‚๐€๐ ๐”๐’๐„ ๐“๐‡๐ˆ๐’ ๐Œ๐Ž๐ƒ๐”๐‹๐„ ๐“๐Ž ๐‚๐‡๐€๐๐†๐„ ๐…๐Ž๐๐“ ๐’๐“๐˜๐‹๐„ COMMAND : /font your text (optional) Eg:- /font Hello - This feature added by @๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผ""" + This feature added by @ARAKAL_THERAVAD_MOVIES""" JSON_TXT = """JSON: Bot returns json for all replied messages with /json or /js Features: @@ -190,24 +194,24 @@ class script(object): WHOIS_TXT ="""WHOIS MODULE Note:- Give a user details -โ€ข/whois :-give a user full details ๐Ÿ“‘""" +/whois :-give a user full details ๐Ÿ“‘""" - URLSHORT_TXT = """โžค ๐‡๐ž๐ฅ๐ฉ: ๐–ด๐—‹๐—… ๐—Œ๐—๐—ˆ๐—‹๐—๐—‡๐–พ๐—‹ + URLSHORT_TXT = """ ๐‡๐ž๐ฅ๐ฉ: ๐–ด๐—‹๐—… ๐—Œ๐—๐—ˆ๐—‹๐—๐—‡๐–พ๐—‹ ๐šƒ๐š‘๐š’๐šœ ๐šŒ๐š˜๐š–๐š–๐šŠ๐š—๐š ๐š‘๐šŽ๐š•๐š™๐šœ ๐šข๐š˜๐šž ๐š๐š˜ ๐šœ๐š‘๐š˜๐š›๐š ๐šŠ ๐šž๐š›๐š• -โžค ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: -โžช /short: ๐—Ž๐—Œ๐–พ ๐—๐—๐—‚๐—Œ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ ๐—๐—‚๐—๐— ๐—’๐—ˆ๐—Ž๐—‹ ๐—…๐—‚๐—‡๐—„ ๐—๐—ˆ ๐—€๐–พ๐— ๐—Œ๐—๐—ˆ๐—‹๐—๐–พ๐–ฝ ๐—…๐—‚๐—‡๐—„๐—Œ -โž›๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ: + ๐‚๐จ๐ฆ๐ฆ๐š๐ง๐๐ฌ ๐š๐ง๐ ๐”๐ฌ๐š๐ ๐ž: + /short: ๐—Ž๐—Œ๐–พ ๐—๐—๐—‚๐—Œ ๐–ผ๐—ˆ๐—†๐—†๐–บ๐—‡๐–ฝ ๐—๐—‚๐—๐— ๐—’๐—ˆ๐—Ž๐—‹ ๐—…๐—‚๐—‡๐—„ ๐—๐—ˆ ๐—€๐–พ๐— ๐—Œ๐—๐—ˆ๐—‹๐—๐–พ๐–ฝ ๐—…๐—‚๐—‡๐—„๐—Œ +๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ: /short https://youtu.be/example...""" FUN_TXT ="""Gแด€แดแด‡s โšก ๐™น๐š„๐š‚๐šƒ ๐š‚๐™พ๐™ผ๐™ด ๐™บ๐™ธ๐™ฝ๐™ณ ๐™พ๐™ต ๐™ต๐š„๐™ฝ ๐šƒ๐™ท๐™ธ๐™ฝ๐™ถ'๐š‚ โšก -๐Ÿฃ. /dice - ๐š๐™พ๐™ป๐™ด ๐šƒ๐™ท๐™ด ๐™ณ๐™ธ๐™ฒ๐™ด -๐Ÿค. /Throw ๐—ˆ๐—‹ /Dart - ๐šƒ๐™พ ๐™ผ๐™ฐ๐™บ๐™ด ๐™ณ๐™ฐ๐š๐šƒ -3. /Runs - ๐š‚๐™พ๐™ผ๐™ด ๐š๐™ฐ๐™ฝ๐™ณ๐™พ๐™ผ ๐™ณ๐™ธ๐™ฐ๐™ป๐™พ๐™ถ๐š„๐™ด๐š‚ -4. /Goal or /Shoot - ๐šƒ๐™พ ๐™ผ๐™ฐ๐™บ๐™ด ๐™ฐ ๐™ถ๐™พ๐™ฐ๐™ป ๐™พ๐š ๐š‚๐™ท๐™พ๐™พ๐šƒ -5. /luck or /cownd - ๐š‚๐™ฟ๐™ธ๐™ฝ ๐™ฐ๐™ฝ๐™ณ ๐šƒ๐š๐šˆ ๐šˆ๐™พ๐š„๐š ๐™ป๐š„๐™ฒ๐™บ""" + /dice - ๐š๐™พ๐™ป๐™ด ๐šƒ๐™ท๐™ด ๐™ณ๐™ธ๐™ฒ๐™ด + /Throw ๐—ˆ๐—‹ /Dart - ๐šƒ๐™พ ๐™ผ๐™ฐ๐™บ๐™ด ๐™ณ๐™ฐ๐š๐šƒ + /Runs - ๐š‚๐™พ๐™ผ๐™ด ๐š๐™ฐ๐™ฝ๐™ณ๐™พ๐™ผ ๐™ณ๐™ธ๐™ฐ๐™ป๐™พ๐™ถ๐š„๐™ด๐š‚ + /Goal or /Shoot - ๐šƒ๐™พ ๐™ผ๐™ฐ๐™บ๐™ด ๐™ฐ ๐™ถ๐™พ๐™ฐ๐™ป ๐™พ๐š ๐š‚๐™ท๐™พ๐™พ๐šƒ + /luck or /cownd - ๐š‚๐™ฟ๐™ธ๐™ฝ ๐™ฐ๐™ฝ๐™ณ ๐šƒ๐š๐šˆ ๐šˆ๐™พ๐š„๐š ๐™ป๐š„๐™ฒ๐™บ""" ADMIN_TXT = """Help: Admin mods @@ -215,31 +219,31 @@ class script(object): This module only works for my admins Commands and Usage: -โ€ข /logs - to get the rescent errors -โ€ข /stats - to get status of files in db. -โ€ข /delete - to delete a specific file from db. -โ€ข /users - to get list of my users and ids. -โ€ข /chats - to get list of the my chats and ids -โ€ข /leave - to leave from a chat. -โ€ข /disable - do disable a chat. -โ€ข /ban - to ban a user. -โ€ข /unban - to unban a user. -โ€ข /channel - to get list of total connected channels -โ€ข /broadcast - to broadcast a message to all users -โ€ข /grp_broadcast - to broadcast a message to all groups -โ€ข /gfilter - To add global filter -โ€ข /gfilters - To view global filters -โ€ข /delallg - To delete all global filters from database -โ€ข /delg - To delete a specific global filter -โ€ข /setskip - Skip no of files before indexing -โ€ข /send - Send any message through bot to users. /send (username/userid) reply with message -โ€ข /deletefiles - Delete CamRip and PreDvD files delete from database """ + /logs - to get the rescent errors + /stats - to get status of files in db. + /delete - to delete a specific file from db. + /users - to get list of my users and ids. + /chats - to get list of the my chats and ids + /leave - to leave from a chat. + /disable - do disable a chat. + /ban - to ban a user. + /unban - to unban a user. + /channel - to get list of total connected channels + /broadcast - to broadcast a message to all users + /grp_broadcast - to broadcast a message to all groups + /gfilter - To add global filter + /gfilters - To view global filters + /delallg - To delete all global filters from database + /delg - To delete a specific global filter + /setskip - Skip no of files before indexing + /send - Send any message through bot to users. /send (username/userid) reply with message + /deletefiles - Delete CamRip and PreDvD files delete from database """ - STATUS_TXT = """โ˜… ๐šƒ๐™พ๐šƒ๐™ฐ๐™ป ๐™ต๐™ธ๐™ป๐™ด๐š‚: {} -โ˜… ๐šƒ๐™พ๐šƒ๐™ฐ๐™ป ๐š„๐š‚๐™ด๐š๐š‚: {} -โ˜… ๐šƒ๐™พ๐šƒ๐™ฐ๐™ป ๐™ฒ๐™ท๐™ฐ๐šƒ๐š‚: {} -โ˜… ๐š„๐š‚๐™ด๐™ณ ๐š‚๐šƒ๐™พ๐š๐™ฐ๐™ถ๐™ด: {} ๐™ผ๐š’๐™ฑ -โ˜… ๐™ต๐š๐™ด๐™ด ๐š‚๐šƒ๐™พ๐š๐™ฐ๐™ถ๐™ด: {} ๐™ผ๐š’๐™ฑ""" + STATUS_TXT = """ ๐šƒ๐™พ๐šƒ๐™ฐ๐™ป ๐™ต๐™ธ๐™ป๐™ด๐š‚: {} + ๐šƒ๐™พ๐šƒ๐™ฐ๐™ป ๐š„๐š‚๐™ด๐š๐š‚: {} + ๐šƒ๐™พ๐šƒ๐™ฐ๐™ป ๐™ฒ๐™ท๐™ฐ๐šƒ๐š‚: {} + ๐š„๐š‚๐™ด๐™ณ ๐š‚๐šƒ๐™พ๐š๐™ฐ๐™ถ๐™ด: {} ๐™ผ๐š’๐™ฑ + ๐™ต๐š๐™ด๐™ด ๐š‚๐šƒ๐™พ๐š๐™ฐ๐™ถ๐™ด: {} ๐™ผ๐š’๐™ฑ""" CARB_TXT = """Help : ๐—–๐—”๐—ฅ๐—•๐—ข๐—ก ๐™ฒ๐™ฐ๐š๐™ฑ๐™พ๐™ฝ ๐™ธ๐š‚ ๐™ฐ ๐™ต๐™ด๐š„๐šƒ๐š„๐š๐™ด ๐šƒ๐™พ ๐™ผ๐™ฐ๐™บ๐™ด ๐šƒ๐™ท๐™ด ๐™ธ๐™ผ๐™ฐ๐™ถ๐™ด ๐™ฐ๐š‚ ๐š‚๐™ท๐™พ๐š†๐™ฝ ๐™ธ๐™ฝ ๐šƒ๐™ท๐™ด ๐šƒ๐™พ๐™ฟ ๐š†๐™ธ๐šƒ๐™ท ๐šˆ๐™พ๐š„๐š๐™ด ๐šƒ๐™ด๐š‡๐šƒ๐š‚. @@ -262,27 +266,36 @@ class script(object): ๐Ÿ“ซ Your File is Ready -๐Ÿ“‚ FษชสŸแด‡ Nแด€แดแด‡ : {} +๐Ÿ“‚ FษชสŸแด‡ Nแด€แดแด‡ : {} โš™๏ธ FษชสŸแด‡ Sษชแดขแด‡ : {} """ CHANNEL_CAP = """ Hai ๐Ÿ‘‹ {} ๐Ÿ˜ -{} +{} -โš ๏ธ This file will be deleted from here within 10 minute as it has copyright ... !!! +โš ๏ธ เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเตเด‚ เดตเต‡เดฑเต† เดŽเดตเดฟเดŸเต‡เดฒเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดฏเดคเดฟเดจเต เดถเต‡เดทเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•... !!! -เด•เต‹เดชเตเดชเดฟเดฑเตˆเดฑเตเดฑเต เด‰เดณเตเดณเดคเตเด•เตŠเดฃเตเดŸเต เดซเดฏเตฝ 10 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด‡เดตเดฟเดŸเต†เดจเดฟเดจเตเดจเตเด‚ เดกเดฟเดฒเต€เดฑเตเดฑเต เด†เด•เตเดจเตเดจเดคเดพเดฃเต เด…เดคเตเด•เตŠเดฃเตเดŸเต เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเตเด‚ เดฎเดฑเตเดฑเต†เดตเดฟเดŸเต†เด•เตเด•เต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดฏเดคเดฟเดจเต เดถเต‡เดทเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•! +เด•เต‹เดชเตเดชเดฟ เดฑเตˆเดฑเตเดฑเต เด‰เดณเตเดณเดคเต เด•เตŠเดฃเตเดŸเต เดˆ เด’เดฐเต เดซเดฏเตฝ 10 เดฎเดฟเดจเดฟเดฑเตเดฑเต เด•เตŠเดฃเตเดŸเต เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเตเด‚ เดกเดฟเดฒเต‡เดฑเตเดฑเดพเดตเตเด‚...!!! -ยฉ Powered by {} +โ•”โ•โ•โ•โ• แดŠแดษชษด แดกษชแด›สœ แดœs โ•โ•โ•โ•โ•— +โ™ป๏ธ ๐™…๐™Š๐™„๐™‰ :- OTT UPDATES +โ™ป๏ธ ๐™…๐™Š๐™„๐™‰ :- CHANNEL +โ™ป๏ธ ๐™…๐™Š๐™„๐™‰ :- GROUP +โ•šโ•โ•โ•โ• แดŠแดษชษด แดกษชแด›สœ แดœs โ•โ•โ•โ•โ• """ SUR_TXT = """ -๐™ท๐™ด๐™ป๐™ป๐™พ {}, -๐™ผ๐šˆ ๐™ฝ๐™ฐ๐™ผ๐™ด ๐™ธ๐š‚ {}, ๐™ธ ๐™ฒ๐™ฐ๐™ฝ ๐™ฟ๐š๐™พ๐š…๐™ธ๐™ณ๐™ด ๐™ผ๐™พ๐š…๐™ธ๐™ด๐š‚, ๐™น๐š„๐š‚๐šƒ ๐™ฐ๐™ณ๐™ณ ๐™ผ๐™ด ๐šƒ๐™พ ๐šˆ๐™พ๐š„๐š ๐™ถ๐š๐™พ๐š„๐™ฟ ๐™ฐ๐™ฝ๐™ณ ๐™ด๐™ฝ๐™น๐™พ๐šˆ - -""" +๐ป๐‘’๐‘™๐‘™๐‘œ ๐Ÿ‘‹ {}, + +I'แด {}Yแดแดœ Cแด€ษด Cแด€สŸสŸ Mแด‡ A๊œฑ Aแดœแด›แด FษชสŸแด›แด‡ส€ Bแดแด› แด 1 ๐Ÿซถ + +Exแด„สŸแดœ๊œฑษชแด แด‡สŸส Mแด€แด…แด‡ Tสœษช๊œฑ Bแดแด› Fแดส€ @ARAKAL_THERAVAD_MOVIES..!! ๐Ÿ’ซ + +๐Ÿ“Œ Sแดœแด˜แด˜แดส€แด› : @OTT_ARAKAL_THERAVAD_MOVIESS + +๐Ÿ‚ Oแดกษดแด‡ส€ : @ARAKAL_THERAVAD_MOVIES_02_bot""" IMDB_TEMPLATE_TXT = """ ๐Ÿ”– แด›ษชแด›สŸแด‡ :{title} @@ -302,9 +315,9 @@ class script(object): โ•”โ•โ•โ•โ• แดŠแดษชษด แดกษชแด›สœ แดœs โ•โ•โ•โ•โ•— -โ–ซ๏ธ แด„สœแด€ษดษดแด‡สŸ +โ–ซ๏ธ แด„สœแด€ษดษดแด‡สŸ -โ–ซ๏ธ sแดœแด˜แด˜แดส€แด› ษขส€แดแดœแด˜ +โ–ซ๏ธ sแดœแด˜แด˜แดส€แด› ษขส€แดแดœแด˜ โ•šโ•โ•โ•โ• แดŠแดษชษด แดกษชแด›สœ แดœs โ•โ•โ•โ•โ•""" RESTART_TXT = """ @@ -321,29 +334,38 @@ class script(object): TOP_ALRT_MSG = """โ™ป๏ธ แด„สœแด‡แด„แด‹ษชษดษข ๊œฐษชสŸแด‡ แดษด แดส แด…แด€แด›แด€ส™แด€๊œฑแด‡... โ™ป๏ธ""" - MVE_NT_FND = """แด›สœษช๊œฑ แดแดแด ษชแด‡ ษช๊œฑ ษดแดแด› สแด‡แด› ส€แด‡สŸแด‡แด€๊œฑแด‡แด… แดส€ แด€แด…แด…แด‡แด… แด›แด แด…แด€แด›แด€ส™แด€๊œฑแด‡ """ + MVE_NT_FND = """โ€ผ๏ธ FILE NOT FOUND ? โ€ผ๏ธ + +1๏ธโƒฃ เดธเดฟเดจเดฟเดฎเดฏเตเดŸเต† เดธเตเดชเต†เดฒเตเดฒเดฟเด™เตเด™เต เด—เต‚เด—เดฟเดณเดฟเตฝ เด‰เดณเตเดณเดคเต เดชเต‹เดฒเต† เด†เดฃเต‹ เดจเดฟเด™เตเด™เตพ เด…เดŸเดฟเดšเตเดšเดคเต เดŽเดจเตเดจเต เด‰เดฑเดชเตเดชเต เดตเดฐเตเดคเตเดคเตเด•..!! + + 2๏ธโƒฃ เดจเดฟเด™เตเด™เตพ เดšเต‹เดฆเดฟเดšเตเดš เดธเดฟเดจเดฟเดฎ OTT เดฑเดฟเดฒเต€เดธเต เด†เดฏเดคเดพเดฃเต‹ เดŽเดจเตเดจเต @OTT_ARAKAL_THERAVAD_MOVIESS เดฏเดฟเตฝ เดšเต†เด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•..!! + +3๏ธโƒฃ เดฎเต‚เดตเดฟเด•เตเด•เต เดตเต‡เดฃเตเดŸเดฟ เดฎเต†เดธเตเดธเต‡เดœเต เด…เดฏเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเต‚เดตเดฟเดฏเตเดŸเต† เดชเต‡เดฐเต เด‡เดฑเด™เตเด™เดฟเดฏ เดตเตผเดทเด‚ เดฎเดพเดคเตเดฐเด‚ เด…เดฏเด•เตเด•เตเด•..!! - NORSLTS = """โ˜… #๐—ก๐—ผ๐—ฅ๐—ฒ๐˜€๐˜‚๐—น๐˜๐˜€ โ˜… +4โƒฃ โ€ผ ๐–ฑ๐–พ๐—‰๐—ˆ๐—‹๐— ๐—๐—ˆ ๐–บ๐–ฝ๐—†๐—‚๐—‡ โ–ถ @ARAKAL_THERAVAD_MOVIES_02_bot """ + + NORSLTS = """ #๐—ก๐—ผ๐—ฅ๐—ฒ๐˜€๐˜‚๐—น๐˜๐˜€ ๐—œ๐—— : {} ๐—ก๐—ฎ๐—บ๐—ฒ : {} ๐— ๐—ฒ๐˜€๐˜€๐—ฎ๐—ด๐—ฒ : {}""" - I_CUDNT = """สœแด‡สŸสŸแด {} ษช แด„แดแดœสŸแด…ษด'แด› ๊œฐษชษดแด… แด€ษดส แดแดแด ษชแด‡๊œฑ ษชษด แด›สœแด€แด› ษดแด€แดแด‡. -แดแดแด ษชแด‡ ส€แด‡วซแดœแด‡๊œฑแด› ๊œฐแดส€แดแด€แด› -โž  ษขแด แด›แด ษขแดแดษขสŸแด‡ -โž  แด›สแด˜แด‡ แดแดแด ษชแด‡ ษดแด€แดแด‡ -โž  แด„แดแด˜ส แด„แดส€ส€แด‡แด„แด› ษดแด€แดแด‡ -โž  แด˜แด€๊œฑแด›แด‡ แด›สœษช๊œฑ ษขส€แดแดœแด˜ -แด‡xแด€แดแด˜สŸแด‡ : แด‹แด€ษดแด›แด€ส€แด€ 2022 -๐Ÿšฏ แด…แดษดแด› แดœ๊œฑแด‡ โž  ' : ( ! , . / )""" + I_CUDNT = """สœแด‡สŸสŸแด {} โ€ผ๏ธ FILE NOT FOUND ? โ€ผ๏ธ + +1๏ธโƒฃ เดธเดฟเดจเดฟเดฎเดฏเตเดŸเต† เดธเตเดชเต†เดฒเตเดฒเดฟเด™เตเด™เต เด—เต‚เด—เดฟเดณเดฟเตฝ เด‰เดณเตเดณเดคเต เดชเต‹เดฒเต† เด†เดฃเต‹ เดจเดฟเด™เตเด™เตพ เด…เดŸเดฟเดšเตเดšเดคเต เดŽเดจเตเดจเต เด‰เดฑเดชเตเดชเต เดตเดฐเตเดคเตเดคเตเด•..!! + + 2๏ธโƒฃ เดจเดฟเด™เตเด™เตพ เดšเต‹เดฆเดฟเดšเตเดš เดธเดฟเดจเดฟเดฎ OTT เดฑเดฟเดฒเต€เดธเต เด†เดฏเดคเดพเดฃเต‹ เดŽเดจเตเดจเต @OTT_ARAKAL_THERAVAD_MOVIESS เดฏเดฟเตฝ เดšเต†เด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•..!! + +3๏ธโƒฃ เดฎเต‚เดตเดฟเด•เตเด•เต เดตเต‡เดฃเตเดŸเดฟ เดฎเต†เดธเตเดธเต‡เดœเต เด…เดฏเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเต‚เดตเดฟเดฏเตเดŸเต† เดชเต‡เดฐเต เด‡เดฑเด™เตเด™เดฟเดฏ เดตเตผเดทเด‚ เดฎเดพเดคเตเดฐเด‚ เด…เดฏเด•เตเด•เตเด•..!! + +4โƒฃ โ€ผ ๐–ฑ๐–พ๐—‰๐—ˆ๐—‹๐— ๐—๐—ˆ ๐–บ๐–ฝ๐—†๐—‚๐—‡ โ–ถ @ARAKAL_THERAVAD_MOVIES_02_bot """ I_CUD_NT = """สœแด‡สŸสŸแด {} ษช แด„แดแดœสŸแด…ษด'แด› ๊œฐษชษดแด… แด€ษดสแด›สœษชษดษข ส€แด‡สŸแด€แด›แด‡แด… แด›แด แด›สœแด€แด›.แด„สœแด‡แด„แด‹ สแดแดœส€ ๊œฑแด˜แด‡สŸสŸษชษดษข.""" - CUDNT_FND = """สœแด‡สŸสŸแด {} ษช แด„แดแดœสŸแด…ษด'แด› ๊œฐษชษดแด… แด€ษดสแด›สœษชษดษข ส€แด‡สŸแด€แด›แด‡แด… แด›แด แด›สœแด€แด› แด…ษชแด… สแดแดœ แดแด‡แด€ษด แด€ษดส แดษดแด‡ แด๊œฐ แด›สœแด‡๊œฑแด‡?""" + CUDNT_FND = """สœแด‡สŸสŸแด {} BRO เดจเดฟเด™เตเด™เดณเต เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดš เดฎเต‚เดตเดฟ เดคเดพเดดเต†เด•เตเด•เตŠเดŸเตเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดเดคเดพเดฃเต†เดจเตเดจเต SPELLING เดจเต‹เด•เตเด•เดฟ CURRET เด†เดฏเดฟ CLICK เดšเต†เดฏเตเดฏเตเด•...๐Ÿ‘‡๐Ÿป""" REPRT_MSG = """ Reported To Admin""" CON_TXT = """แด„แดแดœษดแด›ส€ส ษชษดา“แด Tสœษชs แดแดแด…แดœสŸแด‡ ษชs แด›แด า“ษชษดแด… ษชษดา“แดส€แดแด€แด›ษชแดษด แด€ส™แดแดœแด› แด„แดแดœษดแด›ส€ษชแด‡s -โ€ข /country [๐–ผ๐—ˆ๐—Ž๐—‡๐—๐—‹๐—’ ๐—‡๐–บ๐—†๐–พ] + /country [๐–ผ๐—ˆ๐—Ž๐—‡๐—๐—‹๐—’ ๐—‡๐–บ๐—†๐–พ] ๐–ค๐—‘๐–บ๐—†๐—‰๐—…๐–พ :- /country India""" diff --git a/app.json b/app.json index f7f3b4d..66528f9 100644 --- a/app.json +++ b/app.json @@ -16,8 +16,8 @@ "index", "inline" ], - "website": "https://github.com/Devil-Botz/Elsa", - "repository": "https://github.com/Devil-Botz/Elsa", + "website": "https://github.com/soulpc/Elsa", + "repository": "https://github.com/soulpc/Elsa", "env": { "BOT_TOKEN": { "description": "Your bot token.", @@ -84,7 +84,7 @@ "formation": { "worker": { "quantity": 1, - "size": "free" + "size": "eco" } } } diff --git a/info.py b/info.py index 03747df..d8e2989 100644 --- a/info.py +++ b/info.py @@ -2,7 +2,7 @@ import os from os import environ from pyrogram import enums -from Script import script +from Script import script import asyncio import json @@ -46,11 +46,11 @@ def __init__(self): BOT_TOKEN = environ['BOT_TOKEN'] # Bot settings -CACHE_TIME = int(environ.get('CACHE_TIME', 300)) +CACHE_TIME = int(environ.get('CACHE_TIME', 600)) USE_CAPTION_FILTER = bool(environ.get('USE_CAPTION_FILTER', False)) -PICS = (environ.get('PICS', 'https://telegra.ph/file/2992a480cae2bc0de1c39.jpg https://telegra.ph/file/76e7b5e94430b84a3d2b2.jpg https://telegra.ph/file/3544a8773740b0412c9dd.jpg https://telegra.ph/file/4b1c7004ea8bd3fed8df9.jpg https://telegra.ph/file/a02e47d932adc336740fa.jpg')).split() -NOR_IMG = environ.get('NOR_IMG', "https://telegra.ph/file/7d7cbf0d6c39dc5a05f5a.jpg") -SPELL_IMG = environ.get('SPELL_IMG',"https://telegra.ph/file/b58f576fed14cd645d2cf.jpg") +PICS = (environ.get('PICS', 'https://telegra.ph/file/715d2668aadfb32cf55de.jpg https://telegra.ph/file/76e7b5e94430b84a3d2b2.jpg https://telegra.ph/file/3544a8773740b0412c9dd.jpg https://telegra.ph/file/4b1c7004ea8bd3fed8df9.jpg https://telegra.ph/file/a02e47d932adc336740fa.jpg')).split() +NOR_IMG = environ.get('NOR_IMG', "https://telegra.ph/file/715d2668aadfb32cf55de.jpg") +SPELL_IMG = environ.get('SPELL_IMG',"https://telegra.ph/file/89b856e886483f9019094.jpg") # Welcome area MELCOW_IMG = environ.get('MELCOW_IMG',"https://telegra.ph/file/e54cae941b9b81f13eb71.jpg") @@ -99,17 +99,17 @@ def __init__(self): DELETE_CHANNELS = [int(dch) if id_pattern.search(dch) else dch for dch in environ.get('DELETE_CHANNELS', '0').split()] PORT = os.environ.get("PORT", "8080") MAX_BTN = int(environ.get('MAX_BTN', "7")) -S_GROUP = environ.get('S_GROUP',"https://t.me/Elsasupportgp") -MAIN_CHANNEL = environ.get('MAIN_CHANNEL',"https://t.me/+1iWSCrpI_083MDM1") -FILE_FORWARD = environ.get('FILE_FORWARD',"https://t.me/+1dbVg9pA2GphZmI1") +S_GROUP = environ.get('S_GROUP',"https://t.me/ARAKAL_THERAVAD_MOVIES") +MAIN_CHANNEL = environ.get('MAIN_CHANNEL',"https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") +FILE_FORWARD = environ.get('FILE_FORWARD',"https://t.me/Grupo_filles") MSG_ALRT = environ.get('MSG_ALRT', '๐‘ช๐‘ฏ๐‘ฌ๐‘ช๐‘ฒ & ๐‘ป๐‘น๐’€ ๐‘จ๐‘ณ๐‘ณ ๐‘ด๐’€ ๐‘ญ๐‘ฌ๐‘จ๐‘ป๐‘ผ๐‘น๐‘ฌ๐‘บ') -FILE_CHANNEL = int(environ.get('FILE_CHANNEL', 0)) +FILE_CHANNEL = int(environ.get('FILE_CHANNEL', '-1001765119767')) LOG_CHANNEL = int(environ.get('LOG_CHANNEL', 0)) SUPPORT_CHAT = environ.get('SUPPORT_CHAT', 'Elsasupportgp') AUTO_DELETE = is_enabled((environ.get('AUTO_DELETE', "True")), True) P_TTI_SHOW_OFF = is_enabled((environ.get('P_TTI_SHOW_OFF', "False")), False) -IMDB = is_enabled((environ.get('IMDB', "True")), True) -SINGLE_BUTTON = is_enabled((environ.get('SINGLE_BUTTON', "False")), False) +IMDB = is_enabled((environ.get('IMDB', "False")), False) +SINGLE_BUTTON = is_enabled((environ.get('SINGLE_BUTTON', "True")), True) CUSTOM_FILE_CAPTION = environ.get("CUSTOM_FILE_CAPTION", f"{script.CUSTOM_FILE_CAPTION}") BATCH_FILE_CAPTION = environ.get("BATCH_FILE_CAPTION", CUSTOM_FILE_CAPTION) IMDB_TEMPLATE = environ.get("IMDB_TEMPLATE", f"{script.IMDB_TEMPLATE_TXT}") @@ -118,7 +118,7 @@ def __init__(self): MAX_LIST_ELM = environ.get("MAX_LIST_ELM", None) INDEX_REQ_CHANNEL = int(environ.get('INDEX_REQ_CHANNEL', LOG_CHANNEL)) FILE_STORE_CHANNEL = [int(ch) for ch in (environ.get('FILE_STORE_CHANNEL', '')).split()] -MELCOW_NEW_USERS = is_enabled((environ.get('MELCOW_NEW_USERS', "True")), True) +MELCOW_NEW_USERS = is_enabled((environ.get('MELCOW_NEW_USERS', "False")), False) PROTECT_CONTENT = is_enabled((environ.get('PROTECT_CONTENT', "False")), False) PUBLIC_FILE_STORE = is_enabled((environ.get('PUBLIC_FILE_STORE', "True")), True) diff --git a/plugins/approve.py b/plugins/approve.py new file mode 100644 index 0000000..40fe546 --- /dev/null +++ b/plugins/approve.py @@ -0,0 +1,27 @@ +from pyrogram import Client +from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup +from pyrogram.errors import UserIsBlocked, PeerIdInvalid + + +@Client.on_chat_join_request() +async def accept_request(client, r): + + rm = InlineKeyboardMarkup([[ + InlineKeyboardButton("๐ŸŽญ ๐˜‘๐˜–๐˜๐˜• ๐˜๐˜–๐˜™ ๐˜”๐˜–๐˜๐˜๐˜Œ๐˜š ๐ŸŽญ", url=f"https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") + ]]) + + try: + await client.send_photo( + r.from_user.id, + 'https://telegra.ph/file/03a7b834ccabe5017f6b5.jpg', + f"**๐–ง๐–พ๐—…๐—…๐—ˆ {r.from_user.mention} ๐Ÿ‘ป, ๐–ถ๐–พ๐—…๐–ผ๐—ˆ๐—†๐–พ ๐–ณ๐—ˆ {r.chat.title}\n๐–ธ๐—ˆ๐—Ž๐—‹ ๐–ฑ๐–พ๐—Š๐—Ž๐–พ๐—Œ๐— ๐–ง๐–บ๐—Œ ๐–ก๐–พ๐–พ๐—‡ ๐– ๐—‰๐—‰๐—‹๐—ˆ๐—๐–พ๐–ฝ...!!!**", + reply_markup=rm) + + except UserIsBlocked: + print("User blocked the bot") + except PeerIdInvalid: + print("Err") + except Exception as e: + print(f"#Error\n{str(e)}") + + await r.approve() diff --git a/plugins/banned.py b/plugins/banned.py deleted file mode 100644 index ec9c049..0000000 --- a/plugins/banned.py +++ /dev/null @@ -1,40 +0,0 @@ -from pyrogram import Client, filters -from utils import temp -from pyrogram.types import Message -from database.users_chats_db import db -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from info import SUPPORT_CHAT - -async def banned_users(_, client, message: Message): - return ( - message.from_user is not None or not message.sender_chat - ) and message.from_user.id in temp.BANNED_USERS - -banned_user = filters.create(banned_users) - -async def disabled_chat(_, client, message: Message): - return message.chat.id in temp.BANNED_CHATS - -disabled_group=filters.create(disabled_chat) - - -@Client.on_message(filters.private & banned_user & filters.incoming) -async def ban_reply(bot, message): - ban = await db.get_ban_status(message.from_user.id) - await message.reply(f'Sorry Dude, You are Banned to use Me. \nBan Reason: {ban["ban_reason"]}') - -@Client.on_message(filters.group & disabled_group & filters.incoming) -async def grp_bd(bot, message): - buttons = [[ - InlineKeyboardButton('Support', url=f'https://t.me/{SUPPORT_CHAT}') - ]] - reply_markup=InlineKeyboardMarkup(buttons) - vazha = await db.get_chat(message.chat.id) - k = await message.reply( - text=f"CHAT NOT ALLOWED ๐Ÿž\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..\nReason : {vazha['reason']}.", - reply_markup=reply_markup) - try: - await k.pin() - except: - pass - await bot.leave_chat(message.chat.id) diff --git a/plugins/broadcast.py b/plugins/broadcast.py index b885065..570ae02 100644 --- a/plugins/broadcast.py +++ b/plugins/broadcast.py @@ -1,26 +1,23 @@ -from pyrogram import Client, filters -import datetime -import time +import datetime, time, os, asyncio,logging +from pyrogram.errors import InputUserDeactivated, UserNotParticipant, FloodWait, UserIsBlocked, PeerIdInvalid +from pyrogram.errors.exceptions.bad_request_400 import MessageTooLong, PeerIdInvalid +from pyrogram.types import Message, InlineKeyboardButton +from pyrogram import Client, filters, enums from database.users_chats_db import db from info import ADMINS -from utils import broadcast_messages -import asyncio + @Client.on_message(filters.command("broadcast") & filters.user(ADMINS) & filters.reply) -# https://t.me/GetTGLink/4178 -async def verupikkals(bot, message): +async def broadcast(bot, message): users = await db.get_all_users() b_msg = message.reply_to_message - sts = await message.reply_text( - text='Broadcasting your messages...' - ) + sts = await message.reply_text('Bส€แดแด€แด…แด„แด€sแด›ษชษดษข Yแดแดœส€ Mแด‡ssแด€ษขแด‡s...') start_time = time.time() total_users = await db.total_users_count() done = 0 blocked = 0 deleted = 0 failed =0 - success = 0 async for user in users: pti, sh = await broadcast_messages(int(user['id']), b_msg) @@ -34,31 +31,27 @@ async def verupikkals(bot, message): elif sh == "Error": failed += 1 done += 1 - await asyncio.sleep(2) if not done % 20: - await sts.edit(f"Broadcast in progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}") + await sts.edit(f"Bส€แดแด€แด…แด„แด€sแด› Iษด Pส€แดษขส€แด‡ss:\n\nTแดแด›แด€สŸ U๊œฑแด‡ส€๊œฑ {total_users}\nCแดแดแดฉสŸแด‡แด›แด‡แด…: {done} / {total_users}\nSแดœแด„แด„แด‡๊œฑ๊œฑ: {success}\nBสŸแดแด„แด‹แด‡แด…: {blocked}\nDแด‡สŸแด‡แด›แด‡แด…: {deleted}") time_taken = datetime.timedelta(seconds=int(time.time()-start_time)) - await sts.edit(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}") + await sts.delete() + await bot.send_message(message.chat.id, f"Bส€แดแด€แด…แด„แด€sแด› CoแดแดฉสŸแด‡แด›แด‡แด…:\nTษชแดแด‡ Tแด€แด‹แด‡แด…{time_taken} Sแด‡แด„\n\nTแดแด›แด€สŸ U๊œฑแด‡ส€๊œฑ: {total_users}\nCแดแดแดฉสŸแด‡แด›แด‡แด…: {done} / {total_users}\nSucแด„แด‡๊œฑ๊œฑ: {success}\nBสŸแดแด„แด‹แด‡แด…: {blocked}\nDแด‡สŸแด‡แด›แด‡แด…: {deleted}") -@Client.on_message(filters.command("grp_broadcast") & filters.user(ADMINS) & filters.reply) -async def grp_brodcst(bot, message): - chats = await db.get_all_chats() - b_msg = message.reply_to_message - sts = await message.reply_text( - text='Broadcasting your messages...' - ) +@Client.on_message(filters.command("clear_junk") & filters.user(ADMINS)) +async def remove_junkuser__db(bot, message): + users = await db.get_all_users() + b_msg = message + sts = await message.reply_text('IN PROGRESS.......') start_time = time.time() - total_chats = await db.total_chat_count() + total_users = await db.total_users_count() + blocked = 0 + deleted = 0 + failed = 0 done = 0 - failed =0 - - success = 0 - async for chat in chats: - pti, sh = await broadcast_messages(int(chat['id']), b_msg) - if pti: - success += 1 - elif pti == False: + async for user in users: + pti, sh = await clear_junk(int(user['id']), b_msg) + if pti == False: if sh == "Blocked": blocked+=1 elif sh == "Deleted": @@ -66,8 +59,160 @@ async def grp_brodcst(bot, message): elif sh == "Error": failed += 1 done += 1 - await asyncio.sleep(2) if not done % 20: - await sts.edit(f"Broadcast in progress:\n\nTotal Chats {total_chats}\nCompleted: {done} / {total_chats}\nSuccess: {success}\nFailed: {failed}") + await sts.edit(f"In Progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nBlocked: {blocked}\nDeleted: {deleted}") + time_taken = datetime.timedelta(seconds=int(time.time()-start_time)) + await sts.delete() + await bot.send_message(message.chat.id, f"Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nBlocked: {blocked}\nDeleted: {deleted}") + + +@Client.on_message(filters.command("group_broadcast") & filters.user(ADMINS) & filters.reply) +async def broadcast_group(bot, message): + groups = await db.get_all_chats() + b_msg = message.reply_to_message + sts = await message.reply_text(text='Broadcasting your messages To Groups...') + start_time = time.time() + total_groups = await db.total_chat_count() + done = 0 + failed = "" + success = 0 + deleted = 0 + async for group in groups: + pti, sh, ex = await broadcast_messages_group(int(group['id']), b_msg) + if pti == True: + if sh == "Succes": + success += 1 + elif pti == False: + if sh == "deleted": + deleted+=1 + failed += ex + try: + await bot.leave_chat(int(group['id'])) + except Exception as e: + print(f"{e} > {group['id']}") + done += 1 + if not done % 20: + await sts.edit(f"Broadcast in progress:\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nSuccess: {success}\nDeleted: {deleted}") + time_taken = datetime.timedelta(seconds=int(time.time()-start_time)) + await sts.delete() + try: + await message.reply_text(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nSuccess: {success}\nDeleted: {deleted}\n\nFiled Reson:- {failed}") + except MessageTooLong: + with open('reason.txt', 'w+') as outfile: + outfile.write(failed) + await message.reply_document('reason.txt', caption=f"Completed:\nCompleted in {time_taken} seconds.\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nSuccess: {success}\nDeleted: {deleted}") + os.remove("reason.txt") + + +@Client.on_message(filters.command(["junk_group", "clear_junk_group"]) & filters.user(ADMINS)) +async def junk_clear_group(bot, message): + groups = await db.get_all_chats() + b_msg = message + sts = await message.reply_text(text='..............') + start_time = time.time() + total_groups = await db.total_chat_count() + done = 0 + failed = "" + deleted = 0 + async for group in groups: + pti, sh, ex = await junk_group(int(group['id']), b_msg) + if pti == False: + if sh == "deleted": + deleted+=1 + failed += ex + try: + await bot.leave_chat(int(group['id'])) + except Exception as e: + print(f"{e} > {group['id']}") + done += 1 + if not done % 20: + await sts.edit(f"in progress:\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nDeleted: {deleted}") time_taken = datetime.timedelta(seconds=int(time.time()-start_time)) - await sts.edit(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Chats {total_chats}\nCompleted: {done} / {total_chats}\nSuccess: {success}\nFailed: {failed}") + await sts.delete() + try: + await bot.send_message(message.chat.id, f"Completed:\nCompleted in {time_taken} seconds.\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nDeleted: {deleted}\n\nFiled Reson:- {failed}") + except MessageTooLong: + with open('junk.txt', 'w+') as outfile: + outfile.write(failed) + await message.reply_document('junk.txt', caption=f"Completed:\nCompleted in {time_taken} seconds.\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nDeleted: {deleted}") + os.remove("junk.txt") + +async def broadcast_messages_group(chat_id, message): + try: + await message.copy(chat_id=chat_id) + return True, "Succes", 'mm' + except FloodWait as e: + await asyncio.sleep(e.value) + return await broadcast_messages_group(chat_id, message) + except Exception as e: + await db.delete_chat(int(chat_id)) + logging.info(f"{chat_id} - PeerIdInvalid") + return False, "deleted", f'{e}\n\n' + +async def junk_group(chat_id, message): + try: + kk = await message.copy(chat_id=chat_id) + await kk.delete(True) + return True, "Succes", 'mm' + except FloodWait as e: + await asyncio.sleep(e.value) + return await junk_group(chat_id, message) + except Exception as e: + await db.delete_chat(int(chat_id)) + logging.info(f"{chat_id} - PeerIdInvalid") + return False, "deleted", f'{e}\n\n' + + +async def clear_junk(user_id, message): + try: + key = await message.copy(chat_id=user_id) + await key.delete(True) + return True, "Success" + except FloodWait as e: + await asyncio.sleep(e.value) + return await clear_junk(user_id, message) + except InputUserDeactivated: + await db.delete_user(int(user_id)) + logging.info(f"{user_id}-Removed from Database, since deleted account.") + return False, "Deleted" + except UserIsBlocked: + logging.info(f"{user_id} -Blocked the bot.") + return False, "Blocked" + except PeerIdInvalid: + await db.delete_user(int(user_id)) + logging.info(f"{user_id} - PeerIdInvalid") + return False, "Error" + except Exception as e: + return False, "Error" + + + +async def broadcast_messages(user_id, message): + try: + await message.copy(chat_id=user_id) + return True, "Success" + except FloodWait as e: + await asyncio.sleep(e.value) + return await broadcast_messages(user_id, message) + except InputUserDeactivated: + await db.delete_user(int(user_id)) + logging.info(f"{user_id}-Removed from Database, since deleted account.") + return False, "Deleted" + except UserIsBlocked: + logging.info(f"{user_id} -Blocked the bot.") + return False, "Blocked" + except PeerIdInvalid: + await db.delete_user(int(user_id)) + logging.info(f"{user_id} - PeerIdInvalid") + return False, "Error" + except Exception as e: + return False, "Error" + + + + + + + + + diff --git a/plugins/channel.py b/plugins/channel.py deleted file mode 100644 index 7fc3ad7..0000000 --- a/plugins/channel.py +++ /dev/null @@ -1,20 +0,0 @@ -from pyrogram import Client, filters -from info import CHANNELS -from database.ia_filterdb import save_file - -media_filter = filters.document | filters.video | filters.audio - - -@Client.on_message(filters.chat(CHANNELS) & media_filter) -async def media(bot, message): - """Media Handler""" - for file_type in ("document", "video", "audio"): - media = getattr(message, file_type, None) - if media is not None: - break - else: - return - - media.file_type = file_type - media.caption = message.caption - await save_file(media) diff --git a/plugins/commands.py b/plugins/commands.py index a7c9a18..c757a70 100644 --- a/plugins/commands.py +++ b/plugins/commands.py @@ -23,10 +23,10 @@ async def start(client, message): if message.chat.type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: buttons = [ [ - InlineKeyboardButton('๐Ÿค– Updates', url=(MAIN_CHANNEL)) + InlineKeyboardButton('๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ', url=f'https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS') ], [ - InlineKeyboardButton('สœแด‡สŸแด˜', url=f"https://t.me/{temp.U_NAME}?start=help"), + InlineKeyboardButton('โญ•๏ธ ๐—š๐—˜๐—ง ๐—ข๐—จ๐—ฅ ๐—–๐—›๐—”๐—ก๐—ก๐—˜๐—Ÿ ๐—Ÿ๐—œ๐—ก๐—ž๐—ฆ โญ•๏ธ', url="https://t.me/ARAKAL_THERAVAD_GROUP_LINKS"), ] ] reply_markup = InlineKeyboardMarkup(buttons) @@ -42,11 +42,19 @@ async def start(client, message): await client.send_message(LOG_CHANNEL, script.LOG_TEXT_P.format(message.from_user.id, message.from_user.mention)) if len(message.command) != 2: buttons = [[ - InlineKeyboardButton('sแดœส€แด˜ส€ษชsแด‡', callback_data='start') + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿญ", url=f"https://t.me/ARAKAL_THERAVAD_MOVIES"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฎ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_02") + ],[ + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฏ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_03"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฐ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_04") + ],[ + InlineKeyboardButton("๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ", url="https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") + ],[ + InlineKeyboardButton("โญ•๏ธ ๐—š๐—˜๐—ง ๐—ข๐—จ๐—ฅ ๐—–๐—›๐—”๐—ก๐—ก๐—˜๐—Ÿ ๐—Ÿ๐—œ๐—ก๐—ž๐—ฆ โญ•๏ธ", url="https://t.me/ARAKAL_THERAVAD_GROUP_LINKS") ]] reply_markup = InlineKeyboardMarkup(buttons) - m=await message.reply_sticker("CAACAgUAAxkBAAINdmL9uWnC3ptj9YnTjFU4YGr5dtzwAAIEAAPBJDExieUdbguzyBAeBA") - await asyncio.sleep(1) + m=await message.reply_sticker("CAACAgUAAxkBAAEK6JBlcDrxx2kKgHFEO-EyNFLg4BDG1AAC7gwAAngciVfzwSTJ0UT6ajME") + await asyncio.sleep(3) await m.delete() await message.reply_photo( photo=random.choice(PICS), @@ -235,97 +243,11 @@ async def start(client, message): chat_id=message.from_user.id, file_id=file_id, caption=f_caption, - reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton('โค๏ธโ€๐Ÿ”ฅ แดŠแดษชษด แด›แด แด„สœแด€ษดษดแด‡สŸ โค๏ธโ€๐Ÿ”ฅ', url=(MAIN_CHANNEL)) ] ] ), + reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton('๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ', url=(MAIN_CHANNEL)) ] ] ), protect_content=True if pre == 'filep' else False, ) -@Client.on_message(filters.command('channel') & filters.user(ADMINS)) -async def channel_info(bot, message): - - """Send basic information of channel""" - if isinstance(CHANNELS, (int, str)): - channels = [CHANNELS] - elif isinstance(CHANNELS, list): - channels = CHANNELS - else: - raise ValueError("Unexpected type of CHANNELS") - - text = '๐Ÿ“‘ **Indexed channels/groups**\n' - for channel in channels: - chat = await bot.get_chat(channel) - if chat.username: - text += '\n@' + chat.username - else: - text += '\n' + chat.title or chat.first_name - - text += f'\n\n**Total:** {len(CHANNELS)}' - - if len(text) < 4096: - await message.reply(text) - else: - file = 'Indexed channels.txt' - with open(file, 'w') as f: - f.write(text) - await message.reply_document(file) - os.remove(file) - - -@Client.on_message(filters.command('logs') & filters.user(ADMINS)) -async def log_file(bot, message): - """Send log file""" - try: - await message.reply_document('TelegramBot.log') - except Exception as e: - await message.reply(str(e)) - -@Client.on_message(filters.command('delete') & filters.user(ADMINS)) -async def delete(bot, message): - """Delete file from database""" - reply = message.reply_to_message - if reply and reply.media: - msg = await message.reply("Processing...โณ", quote=True) - else: - await message.reply('Reply to file with /delete which you want to delete', quote=True) - return - - for file_type in ("document", "video", "audio"): - media = getattr(reply, file_type, None) - if media is not None: - break - else: - await msg.edit('This is not supported file format') - return - - file_id, file_ref = unpack_new_file_id(media.file_id) - - result = await Media.collection.delete_one({ - '_id': file_id, - }) - if result.deleted_count: - await msg.edit('File is successfully deleted from database') - else: - file_name = re.sub(r"(_|\-|\.|\+)", " ", str(media.file_name)) - result = await Media.collection.delete_many({ - 'file_name': file_name, - 'file_size': media.file_size, - 'mime_type': media.mime_type - }) - if result.deleted_count: - await msg.edit('File is successfully deleted from database') - else: - # files indexed before https://github.com/EvamariaTG/EvaMaria/commit/f3d2a1bcb155faf44178e5d7a685a1b533e714bf#diff-86b613edf1748372103e94cacff3b578b36b698ef9c16817bb98fe9ef22fb669R39 - # have original file name. - result = await Media.collection.delete_many({ - 'file_name': media.file_name, - 'file_size': media.file_size, - 'mime_type': media.mime_type - }) - if result.deleted_count: - await msg.edit('File is successfully deleted from database') - else: - await msg.edit('File not found in database') - @Client.on_message(filters.command('deleteall') & filters.user(ADMINS)) async def delete_all_index(bot, message): @@ -354,256 +276,3 @@ async def delete_all_index_confirm(bot, message): await Media.collection.drop() await message.answer(MSG_ALRT) await message.message.edit('Succesfully Deleted All The Indexed Files.') - - -@Client.on_message(filters.command('settings')) -async def settings(client, message): - userid = message.from_user.id if message.from_user else None - if not userid: - return await message.reply(f"You are anonymous admin. Use /connect {message.chat.id} in PM") - chat_type = message.chat.type - - if chat_type == enums.ChatType.PRIVATE: - grpid = await active_connection(str(userid)) - if grpid is not None: - grp_id = grpid - try: - chat = await client.get_chat(grpid) - title = chat.title - except: - await message.reply_text("Make sure I'm present in your group!!", quote=True) - return - else: - await message.reply_text("I'm not connected to any groups!", quote=True) - return - - elif chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - grp_id = message.chat.id - title = message.chat.title - - else: - return - - st = await client.get_chat_member(grp_id, userid) - if ( - st.status != enums.ChatMemberStatus.ADMINISTRATOR - and st.status != enums.ChatMemberStatus.OWNER - and str(userid) not in ADMINS - ): - return - - settings = await get_settings(grp_id) - try: - if settings['auto_delete']: - settings = await get_settings(grp_id) - except KeyError: - await save_group_settings(grp_id, 'auto_delete', True) - settings = await get_settings(grp_id) - if 'is_shortlink' not in settings.keys(): - await save_group_settings(grp_id, 'is_shortlink', False) - else: - pass - - if settings is not None: - buttons = [ - [ - InlineKeyboardButton( - 'Filter Button', - callback_data=f'setgs#button#{settings["button"]}#{grp_id}', - ), - InlineKeyboardButton( - 'Single' if settings["button"] else 'Double', - callback_data=f'setgs#button#{settings["button"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'Redirect To', - callback_data=f'setgs#botpm#{settings["botpm"]}#{grp_id}', - ), - InlineKeyboardButton( - 'Bot PM' if settings["botpm"] else 'Channel', - callback_data=f'setgs#botpm#{settings["botpm"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'File Secure', - callback_data=f'setgs#file_secure#{settings["file_secure"]}#{grp_id}', - ), - InlineKeyboardButton( - 'โœ… Yes' if settings["file_secure"] else 'โŒ No', - callback_data=f'setgs#file_secure#{settings["file_secure"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'IMDB', - callback_data=f'setgs#imdb#{settings["imdb"]}#{grp_id}', - ), - InlineKeyboardButton( - 'โœ… Yes' if settings["imdb"] else 'โŒ No', - callback_data=f'setgs#imdb#{settings["imdb"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'Spell Check', - callback_data=f'setgs#spell_check#{settings["spell_check"]}#{grp_id}', - ), - InlineKeyboardButton( - 'โœ… Yes' if settings["spell_check"] else 'โŒ No', - callback_data=f'setgs#spell_check#{settings["spell_check"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'Welcome', - callback_data=f'setgs#welcome#{settings["welcome"]}#{grp_id}', - ), - InlineKeyboardButton( - 'โœ… Yes' if settings["welcome"] else 'โŒ No', - callback_data=f'setgs#welcome#{settings["welcome"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'Auto Delete', - callback_data=f'setgs#auto_delete#{settings["auto_delete"]}#{grp_id}', - ), - InlineKeyboardButton( - '10 Mins' if settings["auto_delete"] else 'OFF', - callback_data=f'setgs#auto_delete#{settings["auto_delete"]}#{grp_id}', - ), - ], - [ - InlineKeyboardButton( - 'ShortLink', - callback_data=f'setgs#is_shortlink#{settings["is_shortlink"]}#{grp_id}', - ), - InlineKeyboardButton( - 'โœ… ON' if settings["is_shortlink"] else 'โŒ OFF', - callback_data=f'setgs#is_shortlink#{settings["is_shortlink"]}#{grp_id}', - ), - ], - ] - - reply_markup = InlineKeyboardMarkup(buttons) - - await message.reply_text( - text=f"Change Your Settings for {title} As Your Wish โš™", - reply_markup=reply_markup, - disable_web_page_preview=True, - parse_mode=enums.ParseMode.HTML, - reply_to_message_id=message.id - ) - - - -@Client.on_message(filters.command('set_template')) -async def save_template(client, message): - sts = await message.reply("Checking template") - userid = message.from_user.id if message.from_user else None - if not userid: - return await message.reply(f"You are anonymous admin. Use /connect {message.chat.id} in PM") - chat_type = message.chat.type - - if chat_type == enums.ChatType.PRIVATE: - grpid = await active_connection(str(userid)) - if grpid is not None: - grp_id = grpid - try: - chat = await client.get_chat(grpid) - title = chat.title - except: - await message.reply_text("Make sure I'm present in your group!!", quote=True) - return - else: - await message.reply_text("I'm not connected to any groups!", quote=True) - return - - elif chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - grp_id = message.chat.id - title = message.chat.title - - else: - return - - st = await client.get_chat_member(grp_id, userid) - if ( - st.status != enums.ChatMemberStatus.ADMINISTRATOR - and st.status != enums.ChatMemberStatus.OWNER - and str(userid) not in ADMINS - ): - return - - if len(message.command) < 2: - return await sts.edit("No Input!!") - template = message.text.split(" ", 1)[1] - await save_group_settings(grp_id, 'template', template) - await sts.edit(f"Successfully changed template for {title} to\n\n{template}") - -@Client.on_message(filters.command("deletefiles") & filters.user(ADMINS)) -async def deletemultiplefiles(bot, message): - btn = [[ - InlineKeyboardButton("Delete PreDVDs", callback_data="predvd"), - InlineKeyboardButton("Delete CamRips", callback_data="camrip") - ]] - await message.reply_text( - text="Select the type of files you want to delete !\n\nThis will delete 100 files from the database for the selected type.", - reply_markup=InlineKeyboardMarkup(btn) - ) - - -@Client.on_message(filters.command("send") & filters.user(ADMINS)) -async def send_msg(bot, message): - if message.reply_to_message: - target_id = message.text.split(" ", 1)[1] - out = "Users Saved In DB Are:\n\n" - success = False - try: - user = await bot.get_users(target_id) - users = await db.get_all_users() - async for usr in users: - out += f"{usr['id']}" - out += '\n' - if str(user.id) in str(out): - await message.reply_to_message.copy(int(user.id)) - success = True - else: - success = False - if success: - await message.reply_text(f"Your message has been successfully send to {user.mention}.") - else: - await message.reply_text("This user didn't started this bot yet !") - except Exception as e: - await message.reply_text(f"Error: {e}") - else: - await message.reply_text("Use this command as a reply to any message using the target chat id. For eg: /send userid") - -@Client.on_message(filters.command("shortlink") & filters.user(ADMINS)) -async def shortlink(bot, message): - chat_type = message.chat.type - if chat_type == enums.ChatType.PRIVATE: - return await message.reply_text(f"Hey {message.from_user.mention}, This command only works on groups !") - elif chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - grpid = message.chat.id - title = message.chat.title - else: - return - data = message.text - userid = message.from_user.id - user = await bot.get_chat_member(grpid, userid) - if user.status != enums.ChatMemberStatus.ADMINISTRATOR and user.status != enums.ChatMemberStatus.OWNER and str(userid) not in ADMINS: - return await message.reply_text("You don't have access to use this command !") - else: - pass - try: - command, shortlink_url, api = data.split(" ") - except: - return await message.reply_text("Command Incomplete :(\n\nGive me a shortlink and api along with the command !\n\nFormat: /shortlink shorturllink.in 95a8195c40d31e0c3b6baa68813fcecb1239f2e9") - reply = await message.reply_text("Please Wait...") - await save_group_settings(grpid, 'shortlink', shortlink_url) - await save_group_settings(grpid, 'shortlink_api', api) - await save_group_settings(grpid, 'is_shortlink', True) - await reply.edit_text(f"Successfully added shortlink API for {title}.\n\nCurrent Shortlink Website: {shortlink_url}\nCurrent API: {api}") diff --git a/plugins/connection.py b/plugins/connection.py deleted file mode 100644 index 6011dd1..0000000 --- a/plugins/connection.py +++ /dev/null @@ -1,147 +0,0 @@ -from pyrogram import filters, Client, enums -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from database.connections_mdb import add_connection, all_connections, if_active, delete_connection -from info import ADMINS -import logging - -logger = logging.getLogger(__name__) -logger.setLevel(logging.ERROR) - - -@Client.on_message((filters.private | filters.group) & filters.command('connect')) -async def addconnection(client, message): - userid = message.from_user.id if message.from_user else None - if not userid: - return await message.reply(f"You are anonymous admin. Use /connect {message.chat.id} in PM") - chat_type = message.chat.type - - if chat_type == enums.ChatType.PRIVATE: - try: - cmd, group_id = message.text.split(" ", 1) - except: - await message.reply_text( - "Enter in correct format!\n\n" - "/connect groupid\n\n" - "Get your Group id by adding this bot to your group and use /id", - quote=True - ) - return - - elif chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - group_id = message.chat.id - - try: - st = await client.get_chat_member(group_id, userid) - if ( - st.status != enums.ChatMemberStatus.ADMINISTRATOR - and st.status != enums.ChatMemberStatus.OWNER - and userid not in ADMINS - ): - await message.reply_text("You should be an admin in Given group!", quote=True) - return - except Exception as e: - logger.exception(e) - await message.reply_text( - "Invalid Group ID!\n\nIf correct, Make sure I'm present in your group!!", - quote=True, - ) - - return - try: - st = await client.get_chat_member(group_id, "me") - if st.status == enums.ChatMemberStatus.ADMINISTRATOR: - ttl = await client.get_chat(group_id) - title = ttl.title - - addcon = await add_connection(str(group_id), str(userid)) - if addcon: - await message.reply_text( - f"Successfully connected to **{title}**\nNow manage your group from my pm !", - quote=True, - parse_mode=enums.ParseMode.MARKDOWN - ) - if chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - await client.send_message( - userid, - f"Connected to **{title}** !", - parse_mode=enums.ParseMode.MARKDOWN - ) - else: - await message.reply_text( - "You're already connected to this chat!", - quote=True - ) - else: - await message.reply_text("Add me as an admin in group", quote=True) - except Exception as e: - logger.exception(e) - await message.reply_text('Some error occurred! Try again later.', quote=True) - return - - -@Client.on_message((filters.private | filters.group) & filters.command('disconnect')) -async def deleteconnection(client, message): - userid = message.from_user.id if message.from_user else None - if not userid: - return await message.reply(f"You are anonymous admin. Use /connect {message.chat.id} in PM") - chat_type = message.chat.type - - if chat_type == enums.ChatType.PRIVATE: - await message.reply_text("Run /connections to view or disconnect from groups!", quote=True) - - elif chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - group_id = message.chat.id - - st = await client.get_chat_member(group_id, userid) - if ( - st.status != enums.ChatMemberStatus.ADMINISTRATOR - and st.status != enums.ChatMemberStatus.OWNER - and str(userid) not in ADMINS - ): - return - - delcon = await delete_connection(str(userid), str(group_id)) - if delcon: - await message.reply_text("Successfully disconnected from this chat", quote=True) - else: - await message.reply_text("This chat isn't connected to me!\nDo /connect to connect.", quote=True) - - -@Client.on_message(filters.private & filters.command(["connections"])) -async def connections(client, message): - userid = message.from_user.id - - groupids = await all_connections(str(userid)) - if groupids is None: - await message.reply_text( - "There are no active connections!! Connect to some groups first.", - quote=True - ) - return - buttons = [] - for groupid in groupids: - try: - ttl = await client.get_chat(int(groupid)) - title = ttl.title - active = await if_active(str(userid), str(groupid)) - act = " - ACTIVE" if active else "" - buttons.append( - [ - InlineKeyboardButton( - text=f"{title}{act}", callback_data=f"groupcb:{groupid}:{act}" - ) - ] - ) - except: - pass - if buttons: - await message.reply_text( - "Your connected group details ;\n\n", - reply_markup=InlineKeyboardMarkup(buttons), - quote=True - ) - else: - await message.reply_text( - "There are no active connections!! Connect to some groups first.", - quote=True - ) diff --git a/plugins/delete_files.py b/plugins/delete_files.py index dda816f..798f56f 100644 --- a/plugins/delete_files.py +++ b/plugins/delete_files.py @@ -1,50 +1,83 @@ -#https://github.com/Joelkb/DQ-the-file-donor +#https://github.com/CrazyDeveloperTG/Doctor-Strange import re + import logging + from pyrogram import Client, filters + from info import DELETE_CHANNELS + from database.ia_filterdb import Media, unpack_new_file_id logger = logging.getLogger(__name__) media_filter = filters.document | filters.video | filters.audio - @Client.on_message(filters.chat(DELETE_CHANNELS) & media_filter) + async def deletemultiplemedia(bot, message): + """Delete Multiple files from database""" for file_type in ("document", "video", "audio"): + media = getattr(message, file_type, None) + if media is not None: + break + else: + return file_id, file_ref = unpack_new_file_id(media.file_id) result = await Media.collection.delete_one({ + '_id': file_id, + }) + if result.deleted_count: + logger.info('File is successfully deleted from database.') + else: + file_name = re.sub(r"(_|\-|\.|\+)", " ", str(media.file_name)) + result = await Media.collection.delete_many({ + 'file_name': file_name, + 'file_size': media.file_size, + 'mime_type': media.mime_type + }) + if result.deleted_count: + logger.info('File is successfully deleted from database.') + else: + result = await Media.collection.delete_many({ + 'file_name': media.file_name, + 'file_size': media.file_size, + 'mime_type': media.mime_type + }) + if result.deleted_count: + logger.info('File is successfully deleted from database.') + else: + logger.info('File not found in database.') diff --git a/plugins/genlink.py b/plugins/genlink.py deleted file mode 100644 index 4d9c7dd..0000000 --- a/plugins/genlink.py +++ /dev/null @@ -1,125 +0,0 @@ -import re -from pyrogram import filters, Client, enums -from pyrogram.errors.exceptions.bad_request_400 import ChannelInvalid, UsernameInvalid, UsernameNotModified -from info import ADMINS, LOG_CHANNEL, FILE_STORE_CHANNEL, PUBLIC_FILE_STORE -from database.ia_filterdb import unpack_new_file_id -from utils import temp -import re -import os -import json -import base64 -import logging - -logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) - -async def allowed(_, __, message): - if PUBLIC_FILE_STORE: - return True - if message.from_user and message.from_user.id in ADMINS: - return True - return False - -@Client.on_message(filters.command(['link', 'plink']) & filters.create(allowed)) -async def gen_link_s(bot, message): - replied = message.reply_to_message - if not replied: - return await message.reply('Reply to a message to get a shareable link.') - file_type = replied.media - if file_type not in [enums.MessageMediaType.VIDEO, enums.MessageMediaType.AUDIO, enums.MessageMediaType.DOCUMENT]: - return await message.reply("Reply to a supported media") - if message.has_protected_content and message.chat.id not in ADMINS: - return await message.reply("okDa") - file_id, ref = unpack_new_file_id((getattr(replied, file_type.value)).file_id) - string = 'filep_' if message.text.lower().strip() == "/plink" else 'file_' - string += file_id - outstr = base64.urlsafe_b64encode(string.encode("ascii")).decode().strip("=") - await message.reply(f"Here is your Link:\nhttps://t.me/{temp.U_NAME}?start={outstr}") - - -@Client.on_message(filters.command(['batch', 'pbatch']) & filters.create(allowed)) -async def gen_link_batch(bot, message): - if " " not in message.text: - return await message.reply("Use correct format.\nExample /batch https://t.me/cinemala_com1/10 https://t.me/cinemala_com1/20.") - links = message.text.strip().split(" ") - if len(links) != 3: - return await message.reply("Use correct format.\nExample /batch https://t.me/cinemala_com1/10 https://t.me/cinemala_com1/20.") - cmd, first, last = links - regex = re.compile("(https://)?(t\.me/|telegram\.me/|telegram\.dog/)(c/)?(\d+|[a-zA-Z_0-9]+)/(\d+)$") - match = regex.match(first) - if not match: - return await message.reply('Invalid link') - f_chat_id = match.group(4) - f_msg_id = int(match.group(5)) - if f_chat_id.isnumeric(): - f_chat_id = int(("-100" + f_chat_id)) - - match = regex.match(last) - if not match: - return await message.reply('Invalid link') - l_chat_id = match.group(4) - l_msg_id = int(match.group(5)) - if l_chat_id.isnumeric(): - l_chat_id = int(("-100" + l_chat_id)) - - if f_chat_id != l_chat_id: - return await message.reply("Chat ids not matched.") - try: - chat_id = (await bot.get_chat(f_chat_id)).id - except ChannelInvalid: - return await message.reply('This may be a private channel / group. Make me an admin over there to index the files.') - except (UsernameInvalid, UsernameNotModified): - return await message.reply('Invalid Link specified.') - except Exception as e: - return await message.reply(f'Errors - {e}') - - sts = await message.reply("Generating link for your message.\nThis may take time depending upon number of messages") - if chat_id in FILE_STORE_CHANNEL: - string = f"{f_msg_id}_{l_msg_id}_{chat_id}_{cmd.lower().strip()}" - b_64 = base64.urlsafe_b64encode(string.encode("ascii")).decode().strip("=") - return await sts.edit(f"Here is your link https://t.me/{temp.U_NAME}?start=DSTORE-{b_64}") - - FRMT = "Generating Link...\nTotal Messages: `{total}`\nDone: `{current}`\nRemaining: `{rem}`\nStatus: `{sts}`" - - outlist = [] - - # file store without db channel - og_msg = 0 - tot = 0 - async for msg in bot.iter_messages(f_chat_id, l_msg_id, f_msg_id): - tot += 1 - if msg.empty or msg.service: - continue - if not msg.media: - # only media messages supported. - continue - try: - file_type = msg.media - file = getattr(msg, file_type.value) - caption = getattr(msg, 'caption', '') - if caption: - caption = caption.html - if file: - file = { - "file_id": file.file_id, - "caption": caption, - "title": getattr(file, "file_name", ""), - "size": file.file_size, - "protect": cmd.lower().strip() == "/pbatch", - } - - og_msg +=1 - outlist.append(file) - except: - pass - if not og_msg % 20: - try: - await sts.edit(FRMT.format(total=l_msg_id-f_msg_id, current=tot, rem=((l_msg_id-f_msg_id) - tot), sts="Saving Messages")) - except: - pass - with open(f"batchmode_{message.from_user.id}.json", "w+") as out: - json.dump(outlist, out) - post = await bot.send_document(LOG_CHANNEL, f"batchmode_{message.from_user.id}.json", file_name="Batch.json", caption="โš ๏ธGenerated for filestore.") - os.remove(f"batchmode_{message.from_user.id}.json") - file_id, ref = unpack_new_file_id(post.document.file_id) - await sts.edit(f"Here is your link\nContains `{og_msg}` files.\n https://t.me/{temp.U_NAME}?start=BATCH-{file_id}") diff --git a/plugins/helper/Report_usr.py b/plugins/helper/Report_usr.py deleted file mode 100644 index efacb10..0000000 --- a/plugins/helper/Report_usr.py +++ /dev/null @@ -1,33 +0,0 @@ -# Updated by @Joelkb | For Paid Edits Contact @creatorbeatz on Telegram - -import asyncio -import os -from pyrogram import filters, enums, Client -from Script import script - -@Client.on_message((filters.command(["report"]) | filters.regex("@admins") | filters.regex("@admin")) & filters.group) -async def report_user(bot, message): - if message.reply_to_message: - chat_id = message.chat.id - reporter = str(message.from_user.id) - mention = message.from_user.mention - success = True - report = f"๐–ฑ๐–พ๐—‰๐—ˆ๐—‹๐—๐–พ๐—‹ : {mention} ({reporter})" + "\n" - report += f"๐–ฌ๐–พ๐—Œ๐—Œ๐–บ๐—€๐–พ : {message.reply_to_message.link}" - # Using latest pyrogram's enums to filter out chat administrators - async for admin in bot.get_chat_members(chat_id=message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS): - if not admin.user.is_bot: # Filtering bots and prevent sending message to bots | Message will be send only to user admins - try: - reported_post = await message.reply_to_message.forward(admin.user.id) - await reported_post.reply_text( - text=report, - chat_id=admin.user.id, - disable_web_page_preview=True - ) - success = True - except: - pass - else: # Skipping Bots - pass - if success: - await message.reply_text(script.REPRT_MSG) diff --git a/plugins/helper/approve.py b/plugins/helper/approve.py deleted file mode 100644 index 162eb4b..0000000 --- a/plugins/helper/approve.py +++ /dev/null @@ -1,15 +0,0 @@ -import os -import asyncio -from pyrogram import Client, filters -from pyrogram.types import Message, User, ChatJoinRequest -from info import CHAT_ID, TEXT, APPROVED - - -@Client.on_chat_join_request((filters.group | filters.channel) & filters.chat(CHAT_ID) if CHAT_ID else (filters.group | filters.channel)) -async def autoapprove(client, message: ChatJoinRequest): - chat=message.chat - user=message.from_user - print(f"{user.first_name} Joined (Approved)") - await client.approve_chat_join_request(chat_id=chat.id, user_id=user.id) - if APPROVED == "on": - await client.send_message(chat_id=chat.id, text=TEXT.format(mention=user.mention, title=chat.title)) diff --git a/plugins/helper/audiobook.py b/plugins/helper/audiobook.py deleted file mode 100644 index 6ebfa2a..0000000 --- a/plugins/helper/audiobook.py +++ /dev/null @@ -1,52 +0,0 @@ -import os -import pyrogram -import PyPDF2 -import time -from pyrogram import Client, filters, enums -from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton -from pyrogram.types import User, Message, Document -from gtts import gTTS -from info import DOWNLOAD_LOCATION - -Thanks = """ Thats The End Of Your Audio Book, And Thanks for Using this Service""" - -@Client.on_message(filters.command(["audiobook"])) # PdfToText -async def pdf_to_text(bot, message): - try: - if message.reply_to_message: - pdf_path = DOWNLOAD_LOCATION + f"{message.chat.id}.pdf" #pdfFileObject - txt = await message.reply("Downloading.....") - await message.reply_to_message.download(pdf_path) - await txt.edit("Downloaded File") - pdf = open(pdf_path,'rb') - pdf_reader = PyPDF2.PdfFileReader(pdf) #pdfReaderObject - await txt.edit("Getting Number of Pages....") - num_of_pages = pdf_reader.getNumPages() # Number of Pages - await txt.edit(f"Found {num_of_pages} Page") - page_no = pdf_reader.getPage(0) # pageObject - await txt.edit("Finding Text from Pdf File... ") - page_content = """ """ # EmptyString - chat_id = message.chat.id - with open(f'{message.chat.id}.txt', 'a+') as text_path: - for page in range (0,num_of_pages): - page_no = pdf_reader.getPage(page) # Iteration of page number - page_content += page_no.extractText() - await txt.edit(f"Creating Your Audio Book...\n Please Don't Do Anything") - output_text = page_content + Thanks - # Change Voice by editing the Language - language = 'en-in' # 'en': ['en-us', 'en-ca', 'en-uk', 'en-gb', 'en-au', 'en-gh', 'en-in', - # 'en-ie', 'en-nz', 'en-ng', 'en-ph', 'en-za', 'en-tz'], - tts_file = gTTS(text=output_text, lang=language, slow=False) - tts_file.save(f"{message.chat.id}.mp3") - with open(f"{message.chat.id}.mp3", "rb") as speech: - await bot.send_voice(chat_id, speech) - await txt.edit("๐šƒ๐™ท๐™ฐ๐™ฝ๐™บ๐š‚ ๐™ต๐™พ๐š ๐š„๐š‚๐™ธ๐™ฝ๐™ถ ๐™ผ๐™ด...โ˜บ๏ธ\nยฉ๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผ") - os.remove(pdf_path) - - - else : - await message.reply("Please Reply to PDF file") - except Exception as error : - print(error) - await txt.delete() - os.remove(pdf_path) diff --git a/plugins/helper/carbon.py b/plugins/helper/carbon.py deleted file mode 100644 index e7a627e..0000000 --- a/plugins/helper/carbon.py +++ /dev/null @@ -1,50 +0,0 @@ -from pyrogram import filters -from aiohttp import ClientSession -from pyrogram import Client as bot -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from asyncio import gather -from datetime import datetime, timedelta -from io import BytesIO -from math import atan2, cos, radians, sin, sqrt -from os import execvp -from random import randint -from re import findall -from re import sub as re_sub -from sys import executable -import aiofiles -import speedtest -from PIL import Image -from pyrogram.types import Message -from info import S_GROUP - -aiohttpsession = ClientSession() - -async def make_carbon(code): - url = "https://carbonara.vercel.app/api/cook" - async with aiohttpsession.post(url, json={"code": code}) as resp: - image = BytesIO(await resp.read()) - image.name = "carbon.png" - return image - - -@bot.on_message(filters.command("carbon")) -async def carbon_func(_, message): - if not message.reply_to_message: - return await message.reply_text( - "ส€แด‡แด˜สŸส แด›แด แด€ แด›แด‡xแด› แดแด‡ssแด€ษขแด‡ แด›แด แดแด€แด‹แด‡ แด„แด€ส€ส™แดษด." - ) - if not message.reply_to_message.text: - return await message.reply_text( - "ส€แด‡แด˜สŸส แด›แด แด€ แด›แด‡xแด› แดแด‡ssแด€ษขแด‡ แด›แด แดแด€แด‹แด‡ แด„แด€ส€ส™แดษด." - ) - user_id = message.from_user.id - m = await message.reply_text("แด˜ส€แดแด„แด‡ssษชษดษข...") - carbon = await make_carbon(message.reply_to_message.text) - await m.edit("แดœแด˜สŸแดแด€แด…ษชษดษข..") - await message.reply_photo( - photo=carbon, - caption="**แด›สœษชs แด˜ษชแด„ ษชs ษดษชแด„แด‡ แดษดแด‡\nแดแด€แด…แด‡ ส™ส แด„ษชษดแด‡แดแด€สŸแด€.แด„แดแด**", - reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("sแดœแด˜แด˜แดส€แด›", url=S_GROUP)]]), - ) - await m.delete() - carbon.close() diff --git a/plugins/helper/covid.py b/plugins/helper/covid.py deleted file mode 100644 index f3845b5..0000000 --- a/plugins/helper/covid.py +++ /dev/null @@ -1,46 +0,0 @@ -import os -import requests -from requests.utils import requote_uri -from pyrogram import Client, filters, enums -from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton - -API = "https://api.sumanjay.cf/covid/?country=" - -BUTTONS = InlineKeyboardMarkup([[InlineKeyboardButton("๐™ฒ๐™ป๐™พ๐š‚๐™ด", callback_data='close_data')]]) - -@Client.on_message(filters.command("covid")) -async def reply_info(client, message): - query = message.text.split(None, 1)[1] - await message.reply_photo( - photo="https://telegra.ph/file/51fdcccb41510ff8af8b1.jpg", - caption=covid_info(query), - quote=True - ) - - -def covid_info(country_name): - try: - r = requests.get(API + requote_uri(country_name.lower())) - info = r.json() - country = info['country'].capitalize() - active = info['active'] - confirmed = info['confirmed'] - deaths = info['deaths'] - info_id = info['id'] - last_update = info['last_update'] - latitude = info['latitude'] - longitude = info['longitude'] - recovered = info['recovered'] - covid_info = f"""--**๐™ฒ๐™พ๐š…๐™ธ๐™ณ ๐Ÿท๐Ÿฟ ๐™ธ๐™ฝ๐™ต๐™พ๐š๐™ผ๐™ฐ๐šƒ๐™ธ๐™พ๐™ฝ**-- -แš›โ€บ Country : `{country}` -แš›โ€บ Actived : `{active}` -แš›โ€บ Confirmed : `{confirmed}` -แš›โ€บ Deaths : `{deaths}` -แš›โ€บ ID : `{info_id}` -แš›โ€บ Last Update : `{last_update}` -แš›โ€บ Latitude : `{latitude}` -แš›โ€บ Longitude : `{longitude}` -แš›โ€บ Recovered : `{recovered}`""" - return covid_info - except Exception as error: - return error diff --git a/plugins/helper/gtranslator.py b/plugins/helper/gtranslator.py deleted file mode 100644 index 0bc6158..0000000 --- a/plugins/helper/gtranslator.py +++ /dev/null @@ -1,44 +0,0 @@ -from googletrans import Translator -from pyrogram import Client, filters -from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery -from plugins.helpers.list import list - -@Client.on_message(filters.command(["tr"])) -async def left(client,message): - if (message.reply_to_message): - try: - lgcd = message.text.split("/tr") - lg_cd = lgcd[1].lower().replace(" ", "") - tr_text = message.reply_to_message.text - translator = Translator() - translation = translator.translate(tr_text,dest = lg_cd) - hehek = InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text=f"๐˜”๐˜ฐ๐˜ณ๐˜ฆ ๐˜“๐˜ข๐˜ฏ๐˜จ ๐˜Š๐˜ฐ๐˜ฅ๐˜ฆ๐˜ด", url="https://cloud.google.com/translate/docs/languages" - ) - ], - [ - InlineKeyboardButton( - "๐˜Š๐˜ญ๐˜ฐ๐˜ด๐˜ฆ", callback_data="close_data" - ) - ], - ] - ) - try: - for i in list: - if list[i]==translation.src: - fromt = i - if list[i] == translation.dest: - to = i - await message.reply_text(f"translated from {fromt.capitalize()} to {to.capitalize()}\n\n```{translation.text}```", reply_markup=hehek, quote=True) - except: - await message.reply_text(f"Translated from **{translation.src}** To **{translation.dest}**\n\n```{translation.text}```", reply_markup=hehek, quote=True) - - - except : - print("error") - else: - ms = await message.reply_text("You can Use This Command by using reply to message") - await ms.delete() diff --git a/plugins/helper/json.py b/plugins/helper/json.py deleted file mode 100644 index c06b59d..0000000 --- a/plugins/helper/json.py +++ /dev/null @@ -1,46 +0,0 @@ -import os -from pyrogram import Client, filters, enums -from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, Message, CallbackQuery - -@Client.on_message(filters.command(["json", 'js', 'showjson'])) -async def jsonify(_, message): - the_real_message = None - reply_to_id = None - - if message.reply_to_message: - the_real_message = message.reply_to_message - else: - the_real_message = message - try: - pk = InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text="๐™ฒ๐™ป๐™พ๐š‚๐™ด", - callback_data="close_data" - ) - ] - ] - ) - await message.reply_text(f"{the_real_message}", reply_markup=pk, quote=True) - except Exception as e: - with open("json.text", "w+", encoding="utf8") as out_file: - out_file.write(str(the_real_message)) - reply_markup = InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text="๐™ฒ๐™ป๐™พ๐š‚๐™ด", - callback_data="close_data" - ) - ] - ] - ) - await message.reply_document( - document="json.text", - caption=str(e), - disable_notification=True, - quote=True, - reply_markup=reply_markup - ) - os.remove("json.text") diff --git a/plugins/helper/sticker.py b/plugins/helper/sticker.py deleted file mode 100644 index 218a56f..0000000 --- a/plugins/helper/sticker.py +++ /dev/null @@ -1,12 +0,0 @@ -#Made -#by -#Don_Sflix - -from pyrogram import Client, filters - -@Client.on_message(filters.command(["stickerid"])) -async def stickerid(bot, message): - if message.reply_to_message.sticker: - await message.reply(f"**Sticker ID is** \n `{message.reply_to_message.sticker.file_id}` \n \n ** Unique ID is ** \n\n`{message.reply_to_message.sticker.file_unique_id}`", quote=True) - else: - await message.reply("Oops !! Not a sticker file") diff --git a/plugins/helper/url_shortner.py b/plugins/helper/url_shortner.py deleted file mode 100644 index 9f9de4e..0000000 --- a/plugins/helper/url_shortner.py +++ /dev/null @@ -1,180 +0,0 @@ -import os -import aiohttp -from pyrogram import Client, filters, enums -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, InlineQueryResultArticle, InputTextMessageContent -from pyrogram.handlers import MessageHandler -from pyshorteners import Shortener - -BITLY_API = os.environ.get("BITLY_API", "8df1df8c23f719e5cf97788cc2d40321ea30092b") -CUTTLY_API = os.environ.get("CUTTLY_API", "f64dffbde033b6c307387dd50b7c76e505f1c") -SHORTCM_API = os.environ.get("SHORTCM_API", "pk_...NIZv") -GPLINKS_API = os.environ.get("GPLINKS_API", "008ccaedd6061ad1948838f410947603de9007a7") - -reply_markup = InlineKeyboardMarkup( - [[ - InlineKeyboardButton("๐˜Š๐˜ญ๐˜ฐ๐˜ด๐˜ฆ", callback_data='close_data') - ]] - ) - -@Client.on_message(filters.command(["short"]) & filters.regex(r'https?://[^\s]+')) -async def reply_shortens(bot, update): - message = await update.reply_text( - text="`Analysing your link...`", - disable_web_page_preview=True, - quote=True - ) - link = update.matches[0].group(0) - shorten_urls = await short(link) - await message.edit_text( - text=shorten_urls, - disable_web_page_preview=True - ) - -@Client.on_inline_query(filters.regex(r'https?://[^\s]+')) -async def inline_short(bot, update): - link = update.matches[0].group(0), - shorten_urls = await short(link) - answers = [ - InlineQueryResultArticle( - title="Short Links", - description=update.query, - input_message_content=InputTextMessageContent( - message_text=shorten_urls, - disable_web_page_preview=True - ), - reply_to_message_id=message.id - ) - ] - await bot.answer_inline_query( - inline_query_id=update.id, - results=answers - ) - -async def short(link): - shorten_urls = "**--Shorted URLs--**\n" - - # Bit.ly shorten - if BITLY_API: - try: - s = Shortener(api_key=BITLY_API) - url = s.bitly.short(link) - shorten_urls += f"\n**Bit.ly :-** {url}" - except Exception as error: - print(f"Bit.ly error :- {error}") - - # Chilp.it shorten - try: - s = Shortener() - url = s.chilpit.short(link) - shorten_urls += f"\n**Chilp.it :-** {url}" - except Exception as error: - print(f"Chilp.it error :- {error}") - - # Clck.ru shorten - try: - s = Shortener() - url = s.clckru.short(link) - shorten_urls += f"\n**Clck.ru :-** {url}" - except Exception as error: - print(f"Click.ru error :- {error}") - - # Cutt.ly shorten - if CUTTLY_API: - try: - s = Shortener(api_key=CUTTLY_API) - url = s.cuttly.short(link) - shorten_urls += f"\n**Cutt.ly :-** {url}" - except Exception as error: - print(f"Cutt.ly error :- {error}") - - # Da.gd shorten - try: - s = Shortener() - url = s.dagd.short(link) - shorten_urls += f"\n**Da.gd :-** {url}" - except Exception as error: - print(f"Da.gd error :- {error}") - - # Is.gd shorten - try: - s = Shortener() - url = s.isgd.short(link) - shorten_urls += f"\n**Is.gd :-** {url}" - except Exception as error: - print(f"Is.gd error :- {error}") - - # Osdb.link shorten - try: - s = Shortener() - url = s.osdb.short(link) - shorten_urls += f"\n**Osdb.link :-** {url}" - except Exception as error: - print(f"Osdb.link error :- {error}") - - # Ow.ly shorten - try: - s = Shortener() - url = s.owly.short(link) - shorten_urls += f"\n**Ow.ly :-** {url}" - except Exception as error: - print(f"Ow.ly error :- {error}") - - # Po.st shorten - try: - s = Shortener() - url = s.post.short(link) - shorten_urls += f"\n**Po.st :-** {url}" - except Exception as error: - print(f"Po.st error :- {error}") - - # Qps.ru shorten - try: - s = Shortener() - url = s.qpsru.short(link) - shorten_urls += f"\n**Qps.ru :-** {url}" - except Exception as error: - print(f"Qps.ru error :- {error}") - - # Short.cm shorten - if SHORTCM_API: - try: - s = Shortener(api_key=SHORTCM_API) - url = s.shortcm.short(link) - shorten_urls += f"\n**Short.cm :-** {url}" - except Exception as error: - print(f"Short.cm error :- {error}") - - # TinyURL.com shorten - try: - s = Shortener() - url = s.tinyurl.short(link) - shorten_urls += f"\n**TinyURL.com :-** {url}" - except Exception as error: - print(f"TinyURL.com error :- {error}") - - # NullPointer shorten - try: - s = Shortener(domain='https://0x0.st') - url = s.nullpointer.short(link) - shorten_urls += f"\n**0x0.st :-** {url}" - except Exception as error: - print(f"NullPointer error :- {error}") - - # GPLinks shorten - try: - api_url = "https://gplinks.in/api" - params = {'api': GPLINKS_API, 'url': link} - async with aiohttp.ClientSession() as session: - async with session.get(api_url, params=params, raise_for_status=True) as response: - data = await response.json() - url = data["shortenedUrl"] - shorten_urls += f"\n**GPLinks.in :-** {url}" - except Exception as error: - print(f"GPLink error :- {error}") - - # Send the text - try: - shorten_urls += "" - return shorten_urls - except Exception as error: - return error diff --git a/plugins/helper/whois.py b/plugins/helper/whois.py deleted file mode 100644 index 5c87849..0000000 --- a/plugins/helper/whois.py +++ /dev/null @@ -1,85 +0,0 @@ - -"""Get info about the replied user -Syntax: .whois""" - -import os -import time -from datetime import datetime -from pyrogram import Client, filters, enums -from pyrogram.errors import UserNotParticipant -from info import COMMAND_HAND_LER -from plugins.helper_functions.extract_user import extract_user -from plugins.helper_functions.cust_p_filters import f_onw_fliter -from plugins.helper_functions.last_online_hlpr import last_online - - -@Client.on_message( - filters.command(["whois", "info"], COMMAND_HAND_LER) & - f_onw_fliter -) -async def who_is(client, message): - """ extract user information """ - status_message = await message.reply_text( - "Wait Bro Let Me Check ๐Ÿ™‚" - ) - from_user = None - from_user_id, _ = extract_user(message) - try: - from_user = await client.get_users(from_user_id) - except Exception as error: - await status_message.edit(str(error)) - return - if from_user is None: - await status_message.edit("no valid user_id / message specified") - return - - first_name = from_user.first_name or "" - last_name = from_user.last_name or "" - username = from_user.username or "" - - message_out_str = ( - "แš›โ€บ ๐™ฝ๐™ฐ๐™ผ๐™ด : " - f"{first_name}\n" - f"แš›โ€บ ๐š‚๐š„๐™ต๐™ต๐™ธ๐š‡ : {last_name}\n" - f"แš›โ€บ ๐š„๐š‚๐™ด๐š๐™ฝ๐™ฐ๐™ผ๐™ด : @{username}\n" - f"แš›โ€บ ๐š„๐š‚๐™ด๐š ๐™ธ๐™ณ : {from_user.id}\n" - f"แš›โ€บ ๐š„๐š‚๐™ด๐š ๐™ป๐™ธ๐™ฝ๐™บ : {from_user.mention}\n" if from_user.username else "" - f"แš›โ€บ ๐™ธ๐š‚ ๐™ฐ๐™ฒ๐™ฒ๐™พ๐š„๐™ฝ๐šƒ ๐™ณ๐™ด๐™ป๐™ด๐šƒ๐™ด๐™ณ : True\n" if from_user.is_deleted else "" - f"แš›โ€บ ๐™ธ๐š‚ ๐š…๐™ด๐š๐™ธ๐™ต๐™ธ๐™ด๐™ณ : True" if from_user.is_verified else "" - f"แš›โ€บ ๐™ธ๐š‚ ๐š‚๐™ฒ๐™ฐ๐™ผ : True" if from_user.is_scam else "" - # f"Is Fake: True" if from_user.is_fake else "" - f"แš›โ€บ ๐™ป๐™ฐ๐š‚๐šƒ ๐š‚๐™ด๐™ด๐™ฝ : {last_online(from_user)}\n\n" - ) - - if message.chat.type in [enums.ChatType.SUPERGROUP, enums.ChatType.CHANNEL]: - try: - chat_member_p = await message.chat.get_member(from_user.id) - joined_date = datetime.fromtimestamp( - chat_member_p.joined_date or time.time() - ).strftime("%Y.%m.%d %H:%M:%S") - message_out_str += ( - "Joined on: " - f"{joined_date}" - "\n" - ) - except UserNotParticipant: - pass - chat_photo = from_user.photo - if chat_photo: - local_user_photo = await client.download_media( - message=chat_photo.big_file_id - ) - await message.reply_photo( - photo=local_user_photo, - quote=True, - caption=message_out_str, - disable_notification=True - ) - os.remove(local_user_photo) - else: - await message.reply_text( - text=message_out_str, - quote=True, - disable_notification=True - ) - await status_message.delete() diff --git a/plugins/helper_functions/admin_check.py b/plugins/helper_functions/admin_check.py deleted file mode 100644 index bf05a2d..0000000 --- a/plugins/helper_functions/admin_check.py +++ /dev/null @@ -1,34 +0,0 @@ -from pyrogram.types import Message -from pyrogram import enums - - -async def admin_check(message: Message) -> bool: - if not message.from_user: - return False - - if message.chat.type not in [enums.ChatType.SUPERGROUP, enums.ChatType.CHANNEL]: - return False - - if message.from_user.id in [ - 777000, # Telegram Service Notifications - 1087968824 # GroupAnonymousBot - ]: - return True - - client = message._client - chat_id = message.chat.id - user_id = message.from_user.id - - check_status = await client.get_chat_member( - chat_id=chat_id, - user_id=user_id - ) - admin_strings = [ - enums.ChatMemberStatus.OWNER, - enums.ChatMemberStatus.ADMINISTRATOR - ] - # https://git.colinshark.de/PyroBot/PyroBot/src/branch/master/pyrobot/modules/admin.py#L69 - if check_status.status not in admin_strings: - return False - else: - return True diff --git a/plugins/helper_functions/cust_p_filters.py b/plugins/helper_functions/cust_p_filters.py deleted file mode 100644 index 33831ef..0000000 --- a/plugins/helper_functions/cust_p_filters.py +++ /dev/null @@ -1,47 +0,0 @@ -from pyrogram import ( - filters -) -from info import ADMINS, AUTH_USERS -from plugins.helper_functions.admin_check import admin_check -import os - -USE_AS_BOT = os.environ.get("USE_AS_BOT", True) - -def f_sudo_filter(filt, client, message): - return bool( - message.from_user.id in AUTH_USERS - ) - - -sudo_filter = filters.create( - func=f_sudo_filter, - name="SudoFilter" -) - - -def onw_filter(filt, client, message): - if USE_AS_BOT: - return bool( - True # message.from_user.id in ADMINS - ) - else: - return bool( - message.from_user and - message.from_user.is_self - ) - - -f_onw_fliter = filters.create( - func=onw_filter, - name="OnwFilter" -) - - -async def admin_filter_f(filt, client, message): - return await admin_check(message) - - -admin_fliter = filters.create( - func=admin_filter_f, - name="AdminFilter" -) diff --git a/plugins/helper_functions/extract_user.py b/plugins/helper_functions/extract_user.py deleted file mode 100644 index a4d407e..0000000 --- a/plugins/helper_functions/extract_user.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -from pyrogram.types import Message - - -def extract_user(message: Message) -> (int, str): - """extracts the user from a message""" - user_id = None - user_first_name = None - - if message.reply_to_message: - user_id = message.reply_to_message.from_user.id - user_first_name = message.reply_to_message.from_user.first_name - - elif len(message.command) > 1: - if ( - len(message.entities) > 1 and - message.entities[1].type == "text_mention" - ): - # 0: is the command used - # 1: should be the user specified - required_entity = message.entities[1] - user_id = required_entity.user.id - user_first_name = required_entity.user.first_name - else: - user_id = message.command[1] - # don't want to make a request -_- - user_first_name = user_id - - try: - user_id = int(user_id) - except ValueError: - print("เดชเตŠเดŸเตเดŸเตป") - - else: - user_id = message.from_user.id - user_first_name = message.from_user.first_name - - return (user_id, user_first_name) diff --git a/plugins/helper_functions/fonts_func.py b/plugins/helper_functions/fonts_func.py deleted file mode 100644 index 82da4a8..0000000 --- a/plugins/helper_functions/fonts_func.py +++ /dev/null @@ -1,2364 +0,0 @@ -class Fonts: - def typewriter(text): - style = { - 'a': '๐šŠ', - 'b': '๐š‹', - 'c': '๐šŒ', - 'd': '๐š', - 'e': '๐šŽ', - 'f': '๐š', - 'g': '๐š', - 'h': '๐š‘', - 'i': '๐š’', - 'j': '๐š“', - 'k': '๐š”', - 'l': '๐š•', - 'm': '๐š–', - 'n': '๐š—', - 'o': '๐š˜', - 'p': '๐š™', - 'q': '๐šš', - 'r': '๐š›', - 's': '๐šœ', - 't': '๐š', - 'u': '๐šž', - 'v': '๐šŸ', - 'w': '๐š ', - 'x': '๐šก', - 'y': '๐šข', - 'z': '๐šฃ', - 'A': '๐™ฐ', - 'B': '๐™ฑ', - 'C': '๐™ฒ', - 'D': '๐™ณ', - 'E': '๐™ด', - 'F': '๐™ต', - 'G': '๐™ถ', - 'H': '๐™ท', - 'I': '๐™ธ', - 'J': '๐™น', - 'K': '๐™บ', - 'L': '๐™ป', - 'M': '๐™ผ', - 'N': '๐™ฝ', - 'O': '๐™พ', - 'P': '๐™ฟ', - 'Q': '๐š€', - 'R': '๐š', - 'S': '๐š‚', - 'T': '๐šƒ', - 'U': '๐š„', - 'V': '๐š…', - 'W': '๐š†', - 'X': '๐š‡', - 'Y': '๐šˆ', - 'Z': '๐š‰' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def outline(text): - style = { - 'a': '๐•’', - 'b': '๐•“', - 'c': '๐•”', - 'd': '๐••', - 'e': '๐•–', - 'f': '๐•—', - 'g': '๐•˜', - 'h': '๐•™', - 'i': '๐•š', - 'j': '๐•›', - 'k': '๐•œ', - 'l': '๐•', - 'm': '๐•ž', - 'n': '๐•Ÿ', - 'o': '๐• ', - 'p': '๐•ก', - 'q': '๐•ข', - 'r': '๐•ฃ', - 's': '๐•ค', - 't': '๐•ฅ', - 'u': '๐•ฆ', - 'v': '๐•ง', - 'w': '๐•จ', - 'x': '๐•ฉ', - 'y': '๐•ช', - 'z': '๐•ซ', - 'A': '๐”ธ', - 'B': '๐”น', - 'C': 'โ„‚', - 'D': '๐”ป', - 'E': '๐”ผ', - 'F': '๐”ฝ', - 'G': '๐”พ', - 'H': 'โ„', - 'I': '๐•€', - 'J': '๐•', - 'K': '๐•‚', - 'L': '๐•ƒ', - 'M': '๐•„', - 'N': 'โ„•', - 'O': '๐•†', - 'P': 'โ„™', - 'Q': 'โ„š', - 'R': 'โ„', - 'S': '๐•Š', - 'T': '๐•‹', - 'U': '๐•Œ', - 'V': '๐•', - 'W': '๐•Ž', - 'X': '๐•', - 'Y': '๐•', - 'Z': 'โ„ค', - '0': '๐Ÿ˜', - '1': '๐Ÿ™', - '2': '๐Ÿš', - '3': '๐Ÿ›', - '4': '๐Ÿœ', - '5': '๐Ÿ', - '6': '๐Ÿž', - '7': '๐ŸŸ', - '8': '๐Ÿ ', - '9': '๐Ÿก' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def serief(text): - style = { - 'a': '๐š', - 'b': '๐›', - 'c': '๐œ', - 'd': '๐', - 'e': '๐ž', - 'f': '๐Ÿ', - 'g': '๐ ', - 'h': '๐ก', - 'i': '๐ข', - 'j': '๐ฃ', - 'k': '๐ค', - 'l': '๐ฅ', - 'm': '๐ฆ', - 'n': '๐ง', - 'o': '๐จ', - 'p': '๐ฉ', - 'q': '๐ช', - 'r': '๐ซ', - 's': '๐ฌ', - 't': '๐ญ', - 'u': '๐ฎ', - 'v': '๐ฏ', - 'w': '๐ฐ', - 'x': '๐ฑ', - 'y': '๐ฒ', - 'z': '๐ณ', - 'A': '๐€', - 'B': '๐', - 'C': '๐‚', - 'D': '๐ƒ', - 'E': '๐„', - 'F': '๐…', - 'G': '๐†', - 'H': '๐‡', - 'I': '๐ˆ', - 'J': '๐‰', - 'K': '๐Š', - 'L': '๐‹', - 'M': '๐Œ', - 'N': '๐', - 'O': '๐Ž', - 'P': '๐', - 'Q': '๐', - 'R': '๐‘', - 'S': '๐’', - 'T': '๐“', - 'U': '๐”', - 'V': '๐•', - 'W': '๐–', - 'X': '๐—', - 'Y': '๐˜', - 'Z': '๐™', - '0': '๐ŸŽ', - '1': '๐Ÿ', - '2': '๐Ÿ', - '3': '๐Ÿ‘', - '4': '๐Ÿ’', - '5': '๐Ÿ“', - '6': '๐Ÿ”', - '7': '๐Ÿ•', - '8': '๐Ÿ–', - '9': '๐Ÿ—' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def bold_cool(text): - style = { - 'a': '๐’‚', - 'b': '๐’ƒ', - 'c': '๐’„', - 'd': '๐’…', - 'e': '๐’†', - 'f': '๐’‡', - 'g': '๐’ˆ', - 'h': '๐’‰', - 'i': '๐’Š', - 'j': '๐’‹', - 'k': '๐’Œ', - 'l': '๐’', - 'm': '๐’Ž', - 'n': '๐’', - 'o': '๐’', - 'p': '๐’‘', - 'q': '๐’’', - 'r': '๐’“', - 's': '๐’”', - 't': '๐’•', - 'u': '๐’–', - 'v': '๐’—', - 'w': '๐’˜', - 'x': '๐’™', - 'y': '๐’š', - 'z': '๐’›', - 'A': '๐‘จ', - 'B': '๐‘ฉ', - 'C': '๐‘ช', - 'D': '๐‘ซ', - 'E': '๐‘ฌ', - 'F': '๐‘ญ', - 'G': '๐‘ฎ', - 'H': '๐‘ฏ', - 'I': '๐‘ฐ', - 'J': '๐‘ฑ', - 'K': '๐‘ฒ', - 'L': '๐‘ณ', - 'M': '๐‘ด', - 'N': '๐‘ต', - 'O': '๐‘ถ', - 'P': '๐‘ท', - 'Q': '๐‘ธ', - 'R': '๐‘น', - 'S': '๐‘บ', - 'T': '๐‘ป', - 'U': '๐‘ผ', - 'V': '๐‘ฝ', - 'W': '๐‘พ', - 'X': '๐‘ฟ', - 'Y': '๐’€', - 'Z': '๐’' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def cool(text): - style = { - 'a': '๐‘Ž', - 'b': '๐‘', - 'c': '๐‘', - 'd': '๐‘‘', - 'e': '๐‘’', - 'f': '๐‘“', - 'g': '๐‘”', - 'h': 'โ„Ž', - 'i': '๐‘–', - 'j': '๐‘—', - 'k': '๐‘˜', - 'l': '๐‘™', - 'm': '๐‘š', - 'n': '๐‘›', - 'o': '๐‘œ', - 'p': '๐‘', - 'q': '๐‘ž', - 'r': '๐‘Ÿ', - 's': '๐‘ ', - 't': '๐‘ก', - 'u': '๐‘ข', - 'v': '๐‘ฃ', - 'w': '๐‘ค', - 'x': '๐‘ฅ', - 'y': '๐‘ฆ', - 'z': '๐‘ง', - 'A': '๐ด', - 'B': '๐ต', - 'C': '๐ถ', - 'D': '๐ท', - 'E': '๐ธ', - 'F': '๐น', - 'G': '๐บ', - 'H': '๐ป', - 'I': '๐ผ', - 'J': '๐ฝ', - 'K': '๐พ', - 'L': '๐ฟ', - 'M': '๐‘€', - 'N': '๐‘', - 'O': '๐‘‚', - 'P': '๐‘ƒ', - 'Q': '๐‘„', - 'R': '๐‘…', - 'S': '๐‘†', - 'T': '๐‘‡', - 'U': '๐‘ˆ', - 'V': '๐‘‰', - 'W': '๐‘Š', - 'X': '๐‘‹', - 'Y': '๐‘Œ', - 'Z': '๐‘' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def smallcap(text): - style = { - 'a': 'แด€', - 'b': 'ส™', - 'c': 'แด„', - 'd': 'แด…', - 'e': 'แด‡', - 'f': 'า“', - 'g': 'ษข', - 'h': 'สœ', - 'i': 'ษช', - 'j': 'ษช', - 'k': 'แด‹', - 'l': 'สŸ', - 'm': 'แด', - 'n': 'ษด', - 'o': 'แด', - 'p': 'แด˜', - 'q': 'วซ', - 'r': 'ส€', - 's': '๊œฑ', - 't': 'แด›', - 'u': 'แดœ', - 'v': 'แด ', - 'w': 'แดก', - 'x': 'x', - 'y': 'ส', - 'z': 'แดข', - 'A': 'A', - 'B': 'B', - 'C': 'C', - 'D': 'D', - 'E': 'E', - 'F': 'F', - 'G': 'G', - 'H': 'H', - 'I': 'I', - 'J': 'J', - 'K': 'K', - 'L': 'L', - 'M': 'M', - 'N': 'N', - 'O': 'O', - 'P': 'P', - 'Q': 'Q', - 'R': 'R', - 'S': 'S', - 'T': 'T', - 'U': 'U', - 'V': 'V', - 'W': 'W', - 'X': 'X', - 'Y': 'Y', - 'Z': 'Z', - '0': '๐Ÿถ', - '1': '๐Ÿท', - '2': '๐Ÿธ', - '3': '๐Ÿน', - '4': '๐Ÿบ', - '5': '๐Ÿป', - '6': '๐Ÿผ', - '7': '๐Ÿฝ', - '8': '๐Ÿพ', - '9': '๐Ÿฟ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def script(text): - style = { - 'a': '๐’ถ', - 'b': '๐’ท', - 'c': '๐’ธ', - 'd': '๐’น', - 'e': 'โ„ฏ', - 'f': '๐’ป', - 'g': 'โ„Š', - 'h': '๐’ฝ', - 'i': '๐’พ', - 'j': '๐’ฟ', - 'k': '๐“€', - 'l': '๐“', - 'm': '๐“‚', - 'n': '๐“ƒ', - 'o': 'โ„ด', - 'p': '๐“…', - 'q': '๐“†', - 'r': '๐“‡', - 's': '๐“ˆ', - 't': '๐“‰', - 'u': '๐“Š', - 'v': '๐“‹', - 'w': '๐“Œ', - 'x': '๐“', - 'y': '๐“Ž', - 'z': '๐“', - 'A': '๐’œ', - 'B': 'โ„ฌ', - 'C': '๐’ž', - 'D': '๐’Ÿ', - 'E': 'โ„ฐ', - 'F': 'โ„ฑ', - 'G': '๐’ข', - 'H': 'โ„‹', - 'I': 'โ„', - 'J': '๐’ฅ', - 'K': '๐’ฆ', - 'L': 'โ„’', - 'M': 'โ„ณ', - 'N': '๐’ฉ', - 'O': '๐’ช', - 'P': '๐’ซ', - 'Q': '๐’ฌ', - 'R': 'โ„›', - 'S': '๐’ฎ', - 'T': '๐’ฏ', - 'U': '๐’ฐ', - 'V': '๐’ฑ', - 'W': '๐’ฒ', - 'X': '๐’ณ', - 'Y': '๐’ด', - 'Z': '๐’ต' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def bold_script(text): - style = { - 'a': '๐“ช', - 'b': '๐“ซ', - 'c': '๐“ฌ', - 'd': '๐“ญ', - 'e': '๐“ฎ', - 'f': '๐“ฏ', - 'g': '๐“ฐ', - 'h': '๐“ฑ', - 'i': '๐“ฒ', - 'j': '๐“ณ', - 'k': '๐“ด', - 'l': '๐“ต', - 'm': '๐“ถ', - 'n': '๐“ท', - 'o': '๐“ธ', - 'p': '๐“น', - 'q': '๐“บ', - 'r': '๐“ป', - 's': '๐“ผ', - 't': '๐“ฝ', - 'u': '๐“พ', - 'v': '๐“ฟ', - 'w': '๐”€', - 'x': '๐”', - 'y': '๐”‚', - 'z': '๐”ƒ', - 'A': '๐“', - 'B': '๐“‘', - 'C': '๐“’', - 'D': '๐““', - 'E': '๐“”', - 'F': '๐“•', - 'G': '๐“–', - 'H': '๐“—', - 'I': '๐“˜', - 'J': '๐“™', - 'K': '๐“š', - 'L': '๐“›', - 'M': '๐“œ', - 'N': '๐“', - 'O': '๐“ž', - 'P': '๐“Ÿ', - 'Q': '๐“ ', - 'R': '๐“ก', - 'S': '๐“ข', - 'T': '๐“ฃ', - 'U': '๐“ค', - 'V': '๐“ฅ', - 'W': '๐“ฆ', - 'X': '๐“ง', - 'Y': '๐“จ', - 'Z': '๐“ฉ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def tiny(text): - style = { - 'a': 'แตƒ', - 'b': 'แต‡', - 'c': 'แถœ', - 'd': 'แตˆ', - 'e': 'แต‰', - 'f': 'แถ ', - 'g': 'แต', - 'h': 'สฐ', - 'i': 'โฑ', - 'j': 'สฒ', - 'k': 'แต', - 'l': 'หก', - 'm': 'แต', - 'n': 'โฟ', - 'o': 'แต’', - 'p': 'แต–', - 'q': 'แต ', - 'r': 'สณ', - 's': 'หข', - 't': 'แต—', - 'u': 'แต˜', - 'v': 'แต›', - 'w': 'สท', - 'x': 'หฃ', - 'y': 'สธ', - 'z': 'แถป', - 'A': 'แตƒ', - 'B': 'แต‡', - 'C': 'แถœ', - 'D': 'แตˆ', - 'E': 'แต‰', - 'F': 'แถ ', - 'G': 'แต', - 'H': 'สฐ', - 'I': 'โฑ', - 'J': 'สฒ', - 'K': 'แต', - 'L': 'หก', - 'M': 'แต', - 'N': 'โฟ', - 'O': 'แต’', - 'P': 'แต–', - 'Q': 'แต ', - 'R': 'สณ', - 'S': 'หข', - 'T': 'แต—', - 'U': 'แต˜', - 'V': 'แต›', - 'W': 'สท', - 'X': 'หฃ', - 'Y': 'สธ', - 'Z': 'แถป' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def comic(text): - style = { - 'a': 'แ—ฉ', - 'b': 'แ—ท', - 'c': 'แ‘•', - 'd': 'แ—ช', - 'e': 'แ—ด', - 'f': 'แ–ด', - 'g': 'แ˜œ', - 'h': 'แ•ผ', - 'i': 'I', - 'j': 'แ’', - 'k': 'K', - 'l': 'แ’ช', - 'm': 'แ—ฐ', - 'n': 'แ‘Ž', - 'o': 'O', - 'p': 'แ‘ญ', - 'q': 'แ‘ซ', - 'r': 'แ–‡', - 's': 'ี', - 't': 'T', - 'u': 'แ‘Œ', - 'v': 'แฏ', - 'w': 'แ—ฏ', - 'x': 'แ™ญ', - 'y': 'Y', - 'z': 'แ˜”', - 'A': 'แ—ฉ', - 'B': 'แ—ท', - 'C': 'แ‘•', - 'D': 'แ—ช', - 'E': 'แ—ด', - 'F': 'แ–ด', - 'G': 'แ˜œ', - 'H': 'แ•ผ', - 'I': 'I', - 'J': 'แ’', - 'K': 'K', - 'L': 'แ’ช', - 'M': 'แ—ฐ', - 'N': 'แ‘Ž', - 'O': 'O', - 'P': 'แ‘ญ', - 'Q': 'แ‘ซ', - 'R': 'แ–‡', - 'S': 'ี', - 'T': 'T', - 'U': 'แ‘Œ', - 'V': 'แฏ', - 'W': 'แ—ฏ', - 'X': 'แ™ญ', - 'Y': 'Y', - 'Z': 'แ˜”' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def san(text): - style = { - 'a': '๐—ฎ', - 'b': '๐—ฏ', - 'c': '๐—ฐ', - 'd': '๐—ฑ', - 'e': '๐—ฒ', - 'f': '๐—ณ', - 'g': '๐—ด', - 'h': '๐—ต', - 'i': '๐—ถ', - 'j': '๐—ท', - 'k': '๐—ธ', - 'l': '๐—น', - 'm': '๐—บ', - 'n': '๐—ป', - 'o': '๐—ผ', - 'p': '๐—ฝ', - 'q': '๐—พ', - 'r': '๐—ฟ', - 's': '๐˜€', - 't': '๐˜', - 'u': '๐˜‚', - 'v': '๐˜ƒ', - 'w': '๐˜„', - 'x': '๐˜…', - 'y': '๐˜†', - 'z': '๐˜‡', - 'A': '๐—”', - 'B': '๐—•', - 'C': '๐—–', - 'D': '๐——', - 'E': '๐—˜', - 'F': '๐—™', - 'G': '๐—š', - 'H': '๐—›', - 'I': '๐—œ', - 'J': '๐—', - 'K': '๐—ž', - 'L': '๐—Ÿ', - 'M': '๐— ', - 'N': '๐—ก', - 'O': '๐—ข', - 'P': '๐—ฃ', - 'Q': '๐—ค', - 'R': '๐—ฅ', - 'S': '๐—ฆ', - 'T': '๐—ง', - 'U': '๐—จ', - 'V': '๐—ฉ', - 'W': '๐—ช', - 'X': '๐—ซ', - 'Y': '๐—ฌ', - 'Z': '๐—ญ', - '0': '๐Ÿฌ', - '1': '๐Ÿญ', - '2': '๐Ÿฎ', - '3': '๐Ÿฏ', - '4': '๐Ÿฐ', - '5': '๐Ÿฑ', - '6': '๐Ÿฒ', - '7': '๐Ÿณ', - '8': '๐Ÿด', - '9': '๐Ÿต' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def slant_san(text): - style = { - 'a': '๐™–', - 'b': '๐™—', - 'c': '๐™˜', - 'd': '๐™™', - 'e': '๐™š', - 'f': '๐™›', - 'g': '๐™œ', - 'h': '๐™', - 'i': '๐™ž', - 'j': '๐™Ÿ', - 'k': '๐™ ', - 'l': '๐™ก', - 'm': '๐™ข', - 'n': '๐™ฃ', - 'o': '๐™ค', - 'p': '๐™ฅ', - 'q': '๐™ฆ', - 'r': '๐™ง', - 's': '๐™จ', - 't': '๐™ฉ', - 'u': '๐™ช', - 'v': '๐™ซ', - 'w': '๐™ฌ', - 'x': '๐™ญ', - 'y': '๐™ฎ', - 'z': '๐™ฏ', - 'A': '๐˜ผ', - 'B': '๐˜ฝ', - 'C': '๐˜พ', - 'D': '๐˜ฟ', - 'E': '๐™€', - 'F': '๐™', - 'G': '๐™‚', - 'H': '๐™ƒ', - 'I': '๐™„', - 'J': '๐™…', - 'K': '๐™†', - 'L': '๐™‡', - 'M': '๐™ˆ', - 'N': '๐™‰', - 'O': '๐™Š', - 'P': '๐™‹', - 'Q': '๐™Œ', - 'R': '๐™', - 'S': '๐™Ž', - 'T': '๐™', - 'U': '๐™', - 'V': '๐™‘', - 'W': '๐™’', - 'X': '๐™“', - 'Y': '๐™”', - 'Z': '๐™•' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def slant(text): - style = { - 'a': '๐˜ข', - 'b': '๐˜ฃ', - 'c': '๐˜ค', - 'd': '๐˜ฅ', - 'e': '๐˜ฆ', - 'f': '๐˜ง', - 'g': '๐˜จ', - 'h': '๐˜ฉ', - 'i': '๐˜ช', - 'j': '๐˜ซ', - 'k': '๐˜ฌ', - 'l': '๐˜ญ', - 'm': '๐˜ฎ', - 'n': '๐˜ฏ', - 'o': '๐˜ฐ', - 'p': '๐˜ฑ', - 'q': '๐˜ฒ', - 'r': '๐˜ณ', - 's': '๐˜ด', - 't': '๐˜ต', - 'u': '๐˜ถ', - 'v': '๐˜ท', - 'w': '๐˜ธ', - 'x': '๐˜น', - 'y': '๐˜บ', - 'z': '๐˜ป', - 'A': '๐˜ˆ', - 'B': '๐˜‰', - 'C': '๐˜Š', - 'D': '๐˜‹', - 'E': '๐˜Œ', - 'F': '๐˜', - 'G': '๐˜Ž', - 'H': '๐˜', - 'I': '๐˜', - 'J': '๐˜‘', - 'K': '๐˜’', - 'L': '๐˜“', - 'M': '๐˜”', - 'N': '๐˜•', - 'O': '๐˜–', - 'P': '๐˜—', - 'Q': '๐˜˜', - 'R': '๐˜™', - 'S': '๐˜š', - 'T': '๐˜›', - 'U': '๐˜œ', - 'V': '๐˜', - 'W': '๐˜ž', - 'X': '๐˜Ÿ', - 'Y': '๐˜ ', - 'Z': '๐˜ก' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def sim(text): - style = { - 'a': '๐–บ', - 'b': '๐–ป', - 'c': '๐–ผ', - 'd': '๐–ฝ', - 'e': '๐–พ', - 'f': '๐–ฟ', - 'g': '๐—€', - 'h': '๐—', - 'i': '๐—‚', - 'j': '๐—ƒ', - 'k': '๐—„', - 'l': '๐—…', - 'm': '๐—†', - 'n': '๐—‡', - 'o': '๐—ˆ', - 'p': '๐—‰', - 'q': '๐—Š', - 'r': '๐—‹', - 's': '๐—Œ', - 't': '๐—', - 'u': '๐—Ž', - 'v': '๐—', - 'w': '๐—', - 'x': '๐—‘', - 'y': '๐—’', - 'z': '๐—“', - 'A': '๐– ', - 'B': '๐–ก', - 'C': '๐–ข', - 'D': '๐–ฃ', - 'E': '๐–ค', - 'F': '๐–ฅ', - 'G': '๐–ฆ', - 'H': '๐–ง', - 'I': '๐–จ', - 'J': '๐–ฉ', - 'K': '๐–ช', - 'L': '๐–ซ', - 'M': '๐–ฌ', - 'N': '๐–ญ', - 'O': '๐–ฎ', - 'P': '๐–ฏ', - 'Q': '๐–ฐ', - 'R': '๐–ฑ', - 'S': '๐–ฒ', - 'T': '๐–ณ', - 'U': '๐–ด', - 'V': '๐–ต', - 'W': '๐–ถ', - 'X': '๐–ท', - 'Y': '๐–ธ', - 'Z': '๐–น' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def circles(text): - style = { - 'a': 'โ’ถ๏ธŽ', - 'b': 'โ’ท๏ธŽ', - 'c': 'โ’ธ๏ธŽ', - 'd': 'โ’น๏ธŽ', - 'e': 'โ’บ๏ธŽ', - 'f': 'โ’ป๏ธŽ', - 'g': 'โ’ผ๏ธŽ', - 'h': 'โ’ฝ๏ธŽ', - 'i': 'โ’พ๏ธŽ', - 'j': 'โ’ฟ๏ธŽ', - 'k': 'โ“€๏ธŽ', - 'l': 'โ“๏ธŽ', - 'm': 'โ“‚๏ธŽ', - 'n': 'โ“ƒ๏ธŽ', - 'o': 'โ“„๏ธŽ', - 'p': 'โ“…๏ธŽ', - 'q': 'โ“†๏ธŽ', - 'r': 'โ“‡๏ธŽ', - 's': 'โ“ˆ๏ธŽ', - 't': 'โ“‰๏ธŽ', - 'u': 'โ“Š๏ธŽ', - 'v': 'โ“‹๏ธŽ', - 'w': 'โ“Œ๏ธŽ', - 'x': 'โ“๏ธŽ', - 'y': 'โ“Ž๏ธŽ', - 'z': 'โ“๏ธŽ', - 'A': 'โ’ถ๏ธŽ', - 'B': 'โ’ท๏ธŽ', - 'C': 'โ’ธ๏ธŽ', - 'D': 'โ’น๏ธŽ', - 'E': 'โ’บ๏ธŽ', - 'F': 'โ’ป๏ธŽ', - 'G': 'โ’ผ๏ธŽ', - 'H': 'โ’ฝ๏ธŽ', - 'I': 'โ’พ๏ธŽ', - 'J': 'โ’ฟ๏ธŽ', - 'K': 'โ“€๏ธŽ', - 'L': 'โ“๏ธŽ', - 'M': 'โ“‚๏ธŽ', - 'N': 'โ“ƒ๏ธŽ', - 'O': 'โ“„๏ธŽ', - 'P': 'โ“…๏ธŽ', - 'Q': 'โ“†๏ธŽ', - 'R': 'โ“‡๏ธŽ', - 'S': 'โ“ˆ๏ธŽ', - 'T': 'โ“‰๏ธŽ', - 'U': 'โ“Š๏ธŽ', - 'V': 'โ“‹๏ธŽ', - 'W': 'โ“Œ๏ธŽ', - 'X': 'โ“๏ธŽ', - 'Y': 'โ“Ž๏ธŽ', - 'Z': 'โ“๏ธŽ', - '0': 'โ“ช', - '1': 'โ‘ ', - '2': 'โ‘ก', - '3': 'โ‘ข', - '4': 'โ‘ฃ', - '5': 'โ‘ค', - '6': 'โ‘ฅ', - '7': 'โ‘ฆ', - '8': 'โ‘ง', - '9': 'โ‘จ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def dark_circle(text): - style = { - 'a': '๐Ÿ…๏ธŽ', - 'b': '๐Ÿ…‘๏ธŽ', - 'c': '๐Ÿ…’๏ธŽ', - 'd': '๐Ÿ…“๏ธŽ', - 'e': '๐Ÿ…”๏ธŽ', - 'f': '๐Ÿ…•๏ธŽ', - 'g': '๐Ÿ…–๏ธŽ', - 'h': '๐Ÿ…—๏ธŽ', - 'i': '๐Ÿ…˜๏ธŽ', - 'j': '๐Ÿ…™๏ธŽ', - 'k': '๐Ÿ…š๏ธŽ', - 'l': '๐Ÿ…›๏ธŽ', - 'm': '๐Ÿ…œ๏ธŽ', - 'n': '๐Ÿ…๏ธŽ', - 'o': '๐Ÿ…ž๏ธŽ', - 'p': '๐Ÿ…Ÿ๏ธŽ', - 'q': '๐Ÿ… ๏ธŽ', - 'r': '๐Ÿ…ก๏ธŽ', - 's': '๐Ÿ…ข๏ธŽ', - 't': '๐Ÿ…ฃ๏ธŽ', - 'u': '๐Ÿ…ค๏ธŽ', - 'v': '๐Ÿ…ฅ๏ธŽ', - 'w': '๐Ÿ…ฆ๏ธŽ', - 'x': '๐Ÿ…ง๏ธŽ', - 'y': '๐Ÿ…จ๏ธŽ', - 'z': '๐Ÿ…ฉ๏ธŽ', - 'A': '๐Ÿ…๏ธŽ', - 'B': '๐Ÿ…‘๏ธŽ', - 'C': '๐Ÿ…’๏ธŽ', - 'D': '๐Ÿ…“๏ธŽ', - 'E': '๐Ÿ…”๏ธŽ', - 'F': '๐Ÿ…•๏ธŽ', - 'G': '๐Ÿ…–๏ธŽ', - 'H': '๐Ÿ…—๏ธŽ', - 'I': '๐Ÿ…˜๏ธŽ', - 'J': '๐Ÿ…™๏ธŽ', - 'K': '๐Ÿ…š๏ธŽ', - 'L': '๐Ÿ…›๏ธŽ', - 'M': '๐Ÿ…œ๏ธŽ', - 'N': '๐Ÿ…๏ธŽ', - 'O': '๐Ÿ…ž๏ธŽ', - 'P': '๐Ÿ…Ÿ๏ธŽ', - 'Q': '๐Ÿ… ๏ธŽ', - 'R': '๐Ÿ…ก๏ธŽ', - 'S': '๐Ÿ…ข๏ธŽ', - 'T': '๐Ÿ…ฃ๏ธŽ', - 'U': '๐Ÿ…ค๏ธŽ', - 'V': '๐Ÿ…ฅ๏ธŽ', - 'W': '๐Ÿ…ฆ๏ธŽ', - 'X': '๐Ÿ…ง๏ธŽ', - 'Y': '๐Ÿ…จ๏ธŽ', - 'Z': '๐Ÿ…ฉ', - '0': 'โ“ฟ', - '1': 'โžŠ', - '2': 'โž‹', - '3': 'โžŒ', - '4': 'โž', - '5': 'โžŽ', - '6': 'โž', - '7': 'โž', - '8': 'โž‘', - '9': 'โž’' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def gothic(text): - style = { - 'a': '๐”ž', - 'b': '๐”Ÿ', - 'c': '๐” ', - 'd': '๐”ก', - 'e': '๐”ข', - 'f': '๐”ฃ', - 'g': '๐”ค', - 'h': '๐”ฅ', - 'i': '๐”ฆ', - 'j': '๐”ง', - 'k': '๐”จ', - 'l': '๐”ฉ', - 'm': '๐”ช', - 'n': '๐”ซ', - 'o': '๐”ฌ', - 'p': '๐”ญ', - 'q': '๐”ฎ', - 'r': '๐”ฏ', - 's': '๐”ฐ', - 't': '๐”ฑ', - 'u': '๐”ฒ', - 'v': '๐”ณ', - 'w': '๐”ด', - 'x': '๐”ต', - 'y': '๐”ถ', - 'z': '๐”ท', - 'A': '๐”„', - 'B': '๐”…', - 'C': 'โ„ญ', - 'D': '๐”‡', - 'E': '๐”ˆ', - 'F': '๐”‰', - 'G': '๐”Š', - 'H': 'โ„Œ', - 'I': 'โ„‘', - 'J': '๐”', - 'K': '๐”Ž', - 'L': '๐”', - 'M': '๐”', - 'N': '๐”‘', - 'O': '๐”’', - 'P': '๐”“', - 'Q': '๐””', - 'R': 'โ„œ', - 'S': '๐”–', - 'T': '๐”—', - 'U': '๐”˜', - 'V': '๐”™', - 'W': '๐”š', - 'X': '๐”›', - 'Y': '๐”œ', - 'Z': 'โ„จ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def happy(text): - style = { - 'a': 'aฬ†ฬˆ', - 'b': 'bฬ†ฬˆ', - 'c': 'cฬ†ฬˆ', - 'd': 'dฬ†ฬˆ', - 'e': 'eฬ†ฬˆ', - 'f': 'fฬ†ฬˆ', - 'g': 'gฬ†ฬˆ', - 'h': 'hฬ†ฬˆ', - 'i': 'iฬ†ฬˆ', - 'j': 'jฬ†ฬˆ', - 'k': 'kฬ†ฬˆ', - 'l': 'lฬ†ฬˆ', - 'm': 'mฬ†ฬˆ', - 'n': 'nฬ†ฬˆ', - 'o': 'oฬ†ฬˆ', - 'p': 'pฬ†ฬˆ', - 'q': 'qฬ†ฬˆ', - 'r': 'rฬ†ฬˆ', - 's': 'sฬ†ฬˆ', - 't': 'tฬ†ฬˆ', - 'u': 'uฬ†ฬˆ', - 'v': 'vฬ†ฬˆ', - 'w': 'wฬ†ฬˆ', - 'x': 'xฬ†ฬˆ', - 'y': 'yฬ†ฬˆ', - 'z': 'zฬ†ฬˆ', - 'A': 'Aฬ†ฬˆ', - 'B': 'Bฬ†ฬˆ', - 'C': 'Cฬ†ฬˆ', - 'D': 'Dฬ†ฬˆ', - 'E': 'Eฬ†ฬˆ', - 'F': 'Fฬ†ฬˆ', - 'G': 'Gฬ†ฬˆ', - 'H': 'Hฬ†ฬˆ', - 'I': 'Iฬ†ฬˆ', - 'J': 'Jฬ†ฬˆ', - 'K': 'Kฬ†ฬˆ', - 'L': 'Lฬ†ฬˆ', - 'M': 'Mฬ†ฬˆ', - 'N': 'Nฬ†ฬˆ', - 'O': 'Oฬ†ฬˆ', - 'P': 'Pฬ†ฬˆ', - 'Q': 'Qฬ†ฬˆ', - 'R': 'Rฬ†ฬˆ', - 'S': 'Sฬ†ฬˆ', - 'T': 'Tฬ†ฬˆ', - 'U': 'Uฬ†ฬˆ', - 'V': 'Vฬ†ฬˆ', - 'W': 'Wฬ†ฬˆ', - 'X': 'Xฬ†ฬˆ', - 'Y': 'Yฬ†ฬˆ', - 'Z': 'Zฬ†ฬˆ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def sad(text): - style = { - 'a': 'aฬ‘ฬˆ', - 'b': 'bฬ‘ฬˆ', - 'c': 'cฬ‘ฬˆ', - 'd': 'dฬ‘ฬˆ', - 'e': 'eฬ‘ฬˆ', - 'f': 'fฬ‘ฬˆ', - 'g': 'gฬ‘ฬˆ', - 'h': 'hฬ‘ฬˆ', - 'i': 'iฬ‘ฬˆ', - 'j': 'jฬ‘ฬˆ', - 'k': 'kฬ‘ฬˆ', - 'l': 'lฬ‘ฬˆ', - 'm': 'mฬ‘ฬˆ', - 'n': 'nฬ‘ฬˆ', - 'o': 'oฬ‘ฬˆ', - 'p': 'pฬ‘ฬˆ', - 'q': 'qฬ‘ฬˆ', - 'r': 'rฬ‘ฬˆ', - 's': 'sฬ‘ฬˆ', - 't': 'tฬ‘ฬˆ', - 'u': 'uฬ‘ฬˆ', - 'v': 'vฬ‘ฬˆ', - 'w': 'wฬ‘ฬˆ', - 'x': 'xฬ‘ฬˆ', - 'y': 'yฬ‘ฬˆ', - 'z': 'zฬ‘ฬˆ', - 'A': 'Aฬ‘ฬˆ', - 'B': 'Bฬ‘ฬˆ', - 'C': 'Cฬ‘ฬˆ', - 'D': 'Dฬ‘ฬˆ', - 'E': 'Eฬ‘ฬˆ', - 'F': 'Fฬ‘ฬˆ', - 'G': 'Gฬ‘ฬˆ', - 'H': 'Hฬ‘ฬˆ', - 'I': 'Iฬ‘ฬˆ', - 'J': 'Jฬ‘ฬˆ', - 'K': 'Kฬ‘ฬˆ', - 'L': 'Lฬ‘ฬˆ', - 'M': 'Mฬ‘ฬˆ', - 'N': 'Nฬ‘ฬˆ', - 'O': 'Oฬ‘ฬˆ', - 'P': 'Pฬ‘ฬˆ', - 'Q': 'Qฬ‘ฬˆ', - 'R': 'Rฬ‘ฬˆ', - 'S': 'Sฬ‘ฬˆ', - 'T': 'Tฬ‘ฬˆ', - 'U': 'Uฬ‘ฬˆ', - 'V': 'Vฬ‘ฬˆ', - 'W': 'Wฬ‘ฬˆ', - 'X': 'Xฬ‘ฬˆ', - 'Y': 'Yฬ‘ฬˆ', - 'Z': 'Zฬ‘ฬˆ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def special(text): - style = { - 'a': '๐Ÿ‡ฆโ€Š', - 'b': '๐Ÿ‡งโ€Š', - 'c': '๐Ÿ‡จโ€Š', - 'd': '๐Ÿ‡ฉโ€Š', - 'e': '๐Ÿ‡ชโ€Š', - 'f': '๐Ÿ‡ซโ€Š', - 'g': '๐Ÿ‡ฌโ€Š', - 'h': '๐Ÿ‡ญโ€Š', - 'i': '๐Ÿ‡ฎโ€Š', - 'j': '๐Ÿ‡ฏโ€Š', - 'k': '๐Ÿ‡ฐโ€Š', - 'l': '๐Ÿ‡ฑโ€Š', - 'm': '๐Ÿ‡ฒโ€Š', - 'n': '๐Ÿ‡ณโ€Š', - 'o': '๐Ÿ‡ดโ€Š', - 'p': '๐Ÿ‡ตโ€Š', - 'q': '๐Ÿ‡ถโ€Š', - 'r': '๐Ÿ‡ทโ€Š', - 's': '๐Ÿ‡ธโ€Š', - 't': '๐Ÿ‡นโ€Š', - 'u': '๐Ÿ‡บโ€Š', - 'v': '๐Ÿ‡ปโ€Š', - 'w': '๐Ÿ‡ผโ€Š', - 'x': '๐Ÿ‡ฝโ€Š', - 'y': '๐Ÿ‡พโ€Š', - 'z': '๐Ÿ‡ฟโ€Š', - 'A': '๐Ÿ‡ฆโ€Š', - 'B': '๐Ÿ‡งโ€Š', - 'C': '๐Ÿ‡จโ€Š', - 'D': '๐Ÿ‡ฉโ€Š', - 'E': '๐Ÿ‡ชโ€Š', - 'F': '๐Ÿ‡ซโ€Š', - 'G': '๐Ÿ‡ฌโ€Š', - 'H': '๐Ÿ‡ญโ€Š', - 'I': '๐Ÿ‡ฎโ€Š', - 'J': '๐Ÿ‡ฏโ€Š', - 'K': '๐Ÿ‡ฐโ€Š', - 'L': '๐Ÿ‡ฑโ€Š', - 'M': '๐Ÿ‡ฒโ€Š', - 'N': '๐Ÿ‡ณโ€Š', - 'O': '๐Ÿ‡ดโ€Š', - 'P': '๐Ÿ‡ตโ€Š', - 'Q': '๐Ÿ‡ถโ€Š', - 'R': '๐Ÿ‡ทโ€Š', - 'S': '๐Ÿ‡ธโ€Š', - 'T': '๐Ÿ‡นโ€Š', - 'U': '๐Ÿ‡บโ€Š', - 'V': '๐Ÿ‡ปโ€Š', - 'W': '๐Ÿ‡ผโ€Š', - 'X': '๐Ÿ‡ฝโ€Š', - 'Y': '๐Ÿ‡พโ€Š', - 'Z': '๐Ÿ‡ฟโ€Š' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def square(text): - style = { - 'a': '๐Ÿ„ฐ', - 'b': '๐Ÿ„ฑ', - 'c': '๐Ÿ„ฒ', - 'd': '๐Ÿ„ณ', - 'e': '๐Ÿ„ด', - 'f': '๐Ÿ„ต', - 'g': '๐Ÿ„ถ', - 'h': '๐Ÿ„ท', - 'i': '๐Ÿ„ธ', - 'j': '๐Ÿ„น', - 'k': '๐Ÿ„บ', - 'l': '๐Ÿ„ป', - 'm': '๐Ÿ„ผ', - 'n': '๐Ÿ„ฝ', - 'o': '๐Ÿ„พ', - 'p': '๐Ÿ„ฟ', - 'q': '๐Ÿ…€', - 'r': '๐Ÿ…', - 's': '๐Ÿ…‚', - 't': '๐Ÿ…ƒ', - 'u': '๐Ÿ…„', - 'v': '๐Ÿ……', - 'w': '๐Ÿ…†', - 'x': '๐Ÿ…‡', - 'y': '๐Ÿ…ˆ', - 'z': '๐Ÿ…‰', - 'A': '๐Ÿ„ฐ', - 'B': '๐Ÿ„ฑ', - 'C': '๐Ÿ„ฒ', - 'D': '๐Ÿ„ณ', - 'E': '๐Ÿ„ด', - 'F': '๐Ÿ„ต', - 'G': '๐Ÿ„ถ', - 'H': '๐Ÿ„ท', - 'I': '๐Ÿ„ธ', - 'J': '๐Ÿ„น', - 'K': '๐Ÿ„บ', - 'L': '๐Ÿ„ป', - 'M': '๐Ÿ„ผ', - 'N': '๐Ÿ„ฝ', - 'O': '๐Ÿ„พ', - 'P': '๐Ÿ„ฟ', - 'Q': '๐Ÿ…€', - 'R': '๐Ÿ…', - 'S': '๐Ÿ…‚', - 'T': '๐Ÿ…ƒ', - 'U': '๐Ÿ…„', - 'V': '๐Ÿ……', - 'W': '๐Ÿ…†', - 'X': '๐Ÿ…‡', - 'Y': '๐Ÿ…ˆ', - 'Z': '๐Ÿ…‰' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def dark_square(text): - style = { - 'a': '๐Ÿ…ฐ๏ธŽ', - 'b': '๐Ÿ…ฑ๏ธŽ', - 'c': '๐Ÿ…ฒ๏ธŽ', - 'd': '๐Ÿ…ณ๏ธŽ', - 'e': '๐Ÿ…ด๏ธŽ', - 'f': '๐Ÿ…ต๏ธŽ', - 'g': '๐Ÿ…ถ๏ธŽ', - 'h': '๐Ÿ…ท๏ธŽ', - 'i': '๐Ÿ…ธ๏ธŽ', - 'j': '๐Ÿ…น๏ธŽ', - 'k': '๐Ÿ…บ๏ธŽ', - 'l': '๐Ÿ…ป๏ธŽ', - 'm': '๐Ÿ…ผ๏ธŽ', - 'n': '๐Ÿ…ฝ๏ธŽ', - 'o': '๐Ÿ…พ๏ธŽ', - 'p': '๐Ÿ…ฟ๏ธŽ', - 'q': '๐Ÿ†€๏ธŽ', - 'r': '๐Ÿ†๏ธŽ', - 's': '๐Ÿ†‚๏ธŽ', - 't': '๐Ÿ†ƒ๏ธŽ', - 'u': '๐Ÿ†„๏ธŽ', - 'v': '๐Ÿ†…๏ธŽ', - 'w': '๐Ÿ††๏ธŽ', - 'x': '๐Ÿ†‡๏ธŽ', - 'y': '๐Ÿ†ˆ๏ธŽ', - 'z': '๐Ÿ†‰๏ธŽ', - 'A': '๐Ÿ…ฐ๏ธŽ', - 'B': '๐Ÿ…ฑ๏ธŽ', - 'C': '๐Ÿ…ฒ๏ธŽ', - 'D': '๐Ÿ…ณ๏ธŽ', - 'E': '๐Ÿ…ด๏ธŽ', - 'F': '๐Ÿ…ต๏ธŽ', - 'G': '๐Ÿ…ถ๏ธŽ', - 'H': '๐Ÿ…ท๏ธŽ', - 'I': '๐Ÿ…ธ๏ธŽ', - 'J': '๐Ÿ…น๏ธŽ', - 'K': '๐Ÿ…บ๏ธŽ', - 'L': '๐Ÿ…ป๏ธŽ', - 'M': '๐Ÿ…ผ๏ธŽ', - 'N': '๐Ÿ…ฝ๏ธŽ', - 'O': '๐Ÿ…พ๏ธŽ', - 'P': '๐Ÿ…ฟ๏ธŽ', - 'Q': '๐Ÿ†€๏ธŽ', - 'R': '๐Ÿ†๏ธŽ', - 'S': '๐Ÿ†‚๏ธŽ', - 'T': '๐Ÿ†ƒ๏ธŽ', - 'U': '๐Ÿ†„๏ธŽ', - 'V': '๐Ÿ†…๏ธŽ', - 'W': '๐Ÿ††๏ธŽ', - 'X': '๐Ÿ†‡๏ธŽ', - 'Y': '๐Ÿ†ˆ๏ธŽ', - 'Z': '๐Ÿ†‰๏ธŽ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def andalucia(text): - style = { - 'a': '๊ช–', - 'b': 'แฅ‡', - 'c': 'แฅด', - 'd': 'แฆ”', - 'e': '๊ซ€', - 'f': 'แ ป', - 'g': 'แง', - 'h': '๊ซ', - 'i': '๐“ฒ', - 'j': '๐“ณ', - 'k': '๐˜ฌ', - 'l': '๊ชถ', - 'm': '๊ช‘', - 'n': '๊ช€', - 'o': '๊ชฎ', - 'p': 'ฯ', - 'q': '๐˜ฒ', - 'r': '๐˜ณ', - 's': '๐˜ด', - 't': '๐“ฝ', - 'u': '๊ชŠ', - 'v': '๊ชœ', - 'w': 'แญ™', - 'x': 'แฅŠ', - 'y': '๊ช—', - 'z': 'ษ€', - 'A': '๊ช–', - 'B': 'แฅ‡', - 'C': 'แฅด', - 'D': 'แฆ”', - 'E': '๊ซ€', - 'F': 'แ ป', - 'G': 'แง', - 'H': '๊ซ', - 'I': '๐“ฒ', - 'J': '๐“ณ', - 'K': '๐˜ฌ', - 'L': '๊ชถ', - 'M': '๊ช‘', - 'N': '๊ช€', - 'O': '๊ชฎ', - 'P': 'ฯ', - 'Q': '๐˜ฒ', - 'R': '๐˜ณ', - 'S': '๐˜ด', - 'T': '๐“ฝ', - 'U': '๊ชŠ', - 'V': '๊ชœ', - 'W': 'แญ™', - 'X': 'แฅŠ', - 'Y': '๊ช—', - 'Z': 'ษ€' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def manga(text): - style = { - 'a': 'ๅ‚', - 'b': 'ไนƒ', - 'c': 'ๅŒš', - 'd': 'แ—ช', - 'e': 'ไน‡', - 'f': 'ๅƒ', - 'g': 'แ˜œ', - 'h': 'ๅ„', - 'i': '|', - 'j': '๏พŒ', - 'k': 'าœ', - 'l': 'ใ„ฅ', - 'm': '็ˆช', - 'n': 'ๅ‡ ', - 'o': 'ใ„–', - 'p': 'ๅฉ', - 'q': 'าจ', - 'r': 'ๅฐบ', - 's': 'ไธ‚', - 't': 'ใ„’', - 'u': 'ใ„ฉ', - 'v': 'แฏ', - 'w': 'ๅฑฑ', - 'x': 'ไน‚', - 'y': 'ใ„š', - 'z': 'ไน™', - 'A': 'ๅ‚', - 'B': 'ไนƒ', - 'C': 'ๅŒš', - 'D': 'แ—ช', - 'E': 'ไน‡', - 'F': 'ๅƒ', - 'G': 'แ˜œ', - 'H': 'ๅ„', - 'I': '|', - 'J': '๏พŒ', - 'K': 'าœ', - 'L': 'ใ„ฅ', - 'M': '็ˆช', - 'N': 'ๅ‡ ', - 'O': 'ใ„–', - 'P': 'ๅฉ', - 'Q': 'าจ', - 'R': 'ๅฐบ', - 'S': 'ไธ‚', - 'T': 'ใ„’', - 'U': 'ใ„ฉ', - 'V': 'แฏ', - 'W': 'ๅฑฑ', - 'X': 'ไน‚', - 'Y': 'ใ„š', - 'Z': 'ไน™' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def stinky(text): - style = { - 'a': 'aฬพ', - 'b': 'bฬพ', - 'c': 'cฬพ', - 'd': 'dฬพ', - 'e': 'eฬพ', - 'f': 'fฬพ', - 'g': 'gฬพ', - 'h': 'hฬพ', - 'i': 'iฬพ', - 'j': 'jฬพ', - 'k': 'kฬพ', - 'l': 'lฬพ', - 'm': 'mฬพ', - 'n': 'nฬพ', - 'o': 'oฬพ', - 'p': 'pฬพ', - 'q': 'qฬพ', - 'r': 'rฬพ', - 's': 'sฬพ', - 't': 'tฬพ', - 'u': 'uฬพ', - 'v': 'vฬพ', - 'w': 'wฬพ', - 'x': 'xฬพ', - 'y': 'yฬพ', - 'z': 'zฬพ', - 'A': 'Aฬพ', - 'B': 'Bฬพ', - 'C': 'Cฬพ', - 'D': 'Dฬพ', - 'E': 'Eฬพ', - 'F': 'Fฬพ', - 'G': 'Gฬพ', - 'H': 'Hฬพ', - 'I': 'Iฬพ', - 'J': 'Jฬพ', - 'K': 'Kฬพ', - 'L': 'Lฬพ', - 'M': 'Mฬพ', - 'N': 'Nฬพ', - 'O': 'Oฬพ', - 'P': 'Pฬพ', - 'Q': 'Qฬพ', - 'R': 'Rฬพ', - 'S': 'Sฬพ', - 'T': 'Tฬพ', - 'U': 'Uฬพ', - 'V': 'Vฬพ', - 'W': 'Wฬพ', - 'X': 'Xฬพ', - 'Y': 'Yฬพ', - 'Z': 'Zฬพ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def bubbles(text): - style = { - 'a': 'aอฆฬฅ', - 'b': 'bอฆฬฅ', - 'c': 'cอฆฬฅ', - 'd': 'dอฆฬฅ', - 'e': 'eอฆฬฅ', - 'f': 'fอฆฬฅ', - 'g': 'gอฆฬฅ', - 'h': 'hอฆฬฅ', - 'i': 'iอฆฬฅ', - 'j': 'jอฆฬฅ', - 'k': 'kอฆฬฅ', - 'l': 'lอฆฬฅ', - 'm': 'mอฆฬฅ', - 'n': 'nอฆฬฅ', - 'o': 'oอฆฬฅ', - 'p': 'pอฆฬฅ', - 'q': 'qอฆฬฅ', - 'r': 'rอฆฬฅ', - 's': 'sอฆฬฅ', - 't': 'tอฆฬฅ', - 'u': 'uอฆฬฅ', - 'v': 'vอฆฬฅ', - 'w': 'wอฆฬฅ', - 'x': 'xอฆฬฅ', - 'y': 'yอฆฬฅ', - 'z': 'zอฆฬฅ', - 'A': 'Aอฆฬฅ', - 'B': 'Bอฆฬฅ', - 'C': 'Cอฆฬฅ', - 'D': 'Dอฆฬฅ', - 'E': 'Eอฆฬฅ', - 'F': 'Fอฆฬฅ', - 'G': 'Gอฆฬฅ', - 'H': 'Hอฆฬฅ', - 'I': 'Iอฆฬฅ', - 'J': 'Jอฆฬฅ', - 'K': 'Kอฆฬฅ', - 'L': 'Lอฆฬฅ', - 'M': 'Mอฆฬฅ', - 'N': 'Nอฆฬฅ', - 'O': 'Oอฆฬฅ', - 'P': 'Pอฆฬฅ', - 'Q': 'Qอฆฬฅ', - 'R': 'Rอฆฬฅ', - 'S': 'Sอฆฬฅ', - 'T': 'Tอฆฬฅ', - 'U': 'Uอฆฬฅ', - 'V': 'Vอฆฬฅ', - 'W': 'Wอฆฬฅ', - 'X': 'Xอฆฬฅ', - 'Y': 'Yอฆฬฅ', - 'Z': 'Zอฆฬฅ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def underline(text): - style = { - 'a': 'aอŸ', - 'b': 'bอŸ', - 'c': 'cอŸ', - 'd': 'dอŸ', - 'e': 'eอŸ', - 'f': 'fอŸ', - 'g': 'gอŸ', - 'h': 'hอŸ', - 'i': 'iอŸ', - 'j': 'jอŸ', - 'k': 'kอŸ', - 'l': 'lอŸ', - 'm': 'mอŸ', - 'n': 'nอŸ', - 'o': 'oอŸ', - 'p': 'pอŸ', - 'q': 'qอŸ', - 'r': 'rอŸ', - 's': 'sอŸ', - 't': 'tอŸ', - 'u': 'uอŸ', - 'v': 'vอŸ', - 'w': 'wอŸ', - 'x': 'xอŸ', - 'y': 'yอŸ', - 'z': 'zอŸ', - 'A': 'AอŸ', - 'B': 'BอŸ', - 'C': 'CอŸ', - 'D': 'DอŸ', - 'E': 'EอŸ', - 'F': 'FอŸ', - 'G': 'GอŸ', - 'H': 'HอŸ', - 'I': 'IอŸ', - 'J': 'JอŸ', - 'K': 'KอŸ', - 'L': 'LอŸ', - 'M': 'MอŸ', - 'N': 'NอŸ', - 'O': 'OอŸ', - 'P': 'PอŸ', - 'Q': 'QอŸ', - 'R': 'RอŸ', - 'S': 'SอŸ', - 'T': 'TอŸ', - 'U': 'UอŸ', - 'V': 'VอŸ', - 'W': 'WอŸ', - 'X': 'XอŸ', - 'Y': 'YอŸ', - 'Z': 'ZอŸ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def ladybug(text): - style = { - 'a': '๊', - 'b': '๊Œƒ', - 'c': '๊ณ', - 'd': '๊€ท', - 'e': '๊‚', - 'f': '๊އ', - 'g': '๊…', - 'h': '๊€', - 'i': '๊€ค', - 'j': '๊’ป', - 'k': '๊€˜', - 'l': '๊’’', - 'm': '๊Žญ', - 'n': '๊ˆค', - 'o': '๊‚ฆ', - 'p': 'แ–˜', - 'q': '๊†ฐ', - 'r': '๊‹ช', - 's': '๊Œš', - 't': '๊“„', - 'u': '๊€Ž', - 'v': '๊’ฆ', - 'w': '๊…', - 'x': '๊‰ง', - 'y': '๊Œฉ', - 'z': '๊ด', - 'A': '๊', - 'B': '๊Œƒ', - 'C': '๊ณ', - 'D': '๊€ท', - 'E': '๊‚', - 'F': '๊އ', - 'G': '๊…', - 'H': '๊€', - 'I': '๊€ค', - 'J': '๊’ป', - 'K': '๊€˜', - 'L': '๊’’', - 'M': '๊Žญ', - 'N': '๊ˆค', - 'O': '๊‚ฆ', - 'P': 'แ–˜', - 'Q': '๊†ฐ', - 'R': '๊‹ช', - 'S': '๊Œš', - 'T': '๊“„', - 'U': '๊€Ž', - 'V': '๊’ฆ', - 'W': '๊…', - 'X': '๊‰ง', - 'Y': '๊Œฉ', - 'Z': '๊ด' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def rays(text): - style = { - 'a': 'aา‰', - 'b': 'bา‰', - 'c': 'cา‰', - 'd': 'dา‰', - 'e': 'eา‰', - 'f': 'fา‰', - 'g': 'gา‰', - 'h': 'hา‰', - 'i': 'iา‰', - 'j': 'jา‰', - 'k': 'kา‰', - 'l': 'lา‰', - 'm': 'mา‰', - 'n': 'nา‰', - 'o': 'oา‰', - 'p': 'pา‰', - 'q': 'qา‰', - 'r': 'rา‰', - 's': 'sา‰', - 't': 'tา‰', - 'u': 'uา‰', - 'v': 'vา‰', - 'w': 'wา‰', - 'x': 'xา‰', - 'y': 'yา‰', - 'z': 'zา‰', - 'A': 'Aา‰', - 'B': 'Bา‰', - 'C': 'Cา‰', - 'D': 'Dา‰', - 'E': 'Eา‰', - 'F': 'Fา‰', - 'G': 'Gา‰', - 'H': 'Hา‰', - 'I': 'Iา‰', - 'J': 'Jา‰', - 'K': 'Kา‰', - 'L': 'Lา‰', - 'M': 'Mา‰', - 'N': 'Nา‰', - 'O': 'Oา‰', - 'P': 'Pา‰', - 'Q': 'Qา‰', - 'R': 'Rา‰', - 'S': 'Sา‰', - 'T': 'Tา‰', - 'U': 'Uา‰', - 'V': 'Vา‰', - 'W': 'Wา‰', - 'X': 'Xา‰', - 'Y': 'Yา‰', - 'Z': 'Zา‰' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def birds(text): - style = { - 'a': 'aาˆ', - 'b': 'bาˆ', - 'c': 'cาˆ', - 'd': 'dาˆ', - 'e': 'eาˆ', - 'f': 'fาˆ', - 'g': 'gาˆ', - 'h': 'hาˆ', - 'i': 'iาˆ', - 'j': 'jาˆ', - 'k': 'kาˆ', - 'l': 'lาˆ', - 'm': 'mาˆ', - 'n': 'nาˆ', - 'o': 'oาˆ', - 'p': 'pาˆ', - 'q': 'qาˆ', - 'r': 'rาˆ', - 's': 'sาˆ', - 't': 'tาˆ', - 'u': 'uาˆ', - 'v': 'vาˆ', - 'w': 'wาˆ', - 'x': 'xาˆ', - 'y': 'yาˆ', - 'z': 'zาˆ', - 'A': 'Aาˆ', - 'B': 'Bาˆ', - 'C': 'Cาˆ', - 'D': 'Dาˆ', - 'E': 'Eาˆ', - 'F': 'Fาˆ', - 'G': 'Gาˆ', - 'H': 'Hาˆ', - 'I': 'Iาˆ', - 'J': 'Jาˆ', - 'K': 'Kาˆ', - 'L': 'Lาˆ', - 'M': 'Mาˆ', - 'N': 'Nาˆ', - 'O': 'Oาˆ', - 'P': 'Pาˆ', - 'Q': 'Qาˆ', - 'R': 'Rาˆ', - 'S': 'Sาˆ', - 'T': 'Tาˆ', - 'U': 'Uาˆ', - 'V': 'Vาˆ', - 'W': 'Wาˆ', - 'X': 'Xาˆ', - 'Y': 'Yาˆ', - 'Z': 'Zาˆ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def slash(text): - style = { - 'a': 'aฬธ', - 'b': 'bฬธ', - 'c': 'cฬธ', - 'd': 'dฬธ', - 'e': 'eฬธ', - 'f': 'fฬธ', - 'g': 'gฬธ', - 'h': 'hฬธ', - 'i': 'iฬธ', - 'j': 'jฬธ', - 'k': 'kฬธ', - 'l': 'lฬธ', - 'm': 'mฬธ', - 'n': 'nฬธ', - 'o': 'oฬธ', - 'p': 'pฬธ', - 'q': 'qฬธ', - 'r': 'rฬธ', - 's': 'sฬธ', - 't': 'tฬธ', - 'u': 'uฬธ', - 'v': 'vฬธ', - 'w': 'wฬธ', - 'x': 'xฬธ', - 'y': 'yฬธ', - 'z': 'zฬธ', - 'A': 'Aฬธ', - 'B': 'Bฬธ', - 'C': 'Cฬธ', - 'D': 'Dฬธ', - 'E': 'Eฬธ', - 'F': 'Fฬธ', - 'G': 'Gฬธ', - 'H': 'Hฬธ', - 'I': 'Iฬธ', - 'J': 'Jฬธ', - 'K': 'Kฬธ', - 'L': 'Lฬธ', - 'M': 'Mฬธ', - 'N': 'Nฬธ', - 'O': 'Oฬธ', - 'P': 'Pฬธ', - 'Q': 'Qฬธ', - 'R': 'Rฬธ', - 'S': 'Sฬธ', - 'T': 'Tฬธ', - 'U': 'Uฬธ', - 'V': 'Vฬธ', - 'W': 'Wฬธ', - 'X': 'Xฬธ', - 'Y': 'Yฬธ', - 'Z': 'Zฬธ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def stop(text): - style = { - 'a': 'aโƒ ', - 'b': 'bโƒ ', - 'c': 'cโƒ ', - 'd': 'dโƒ ', - 'e': 'eโƒ ', - 'f': 'fโƒ ', - 'g': 'gโƒ ', - 'h': 'hโƒ ', - 'i': 'iโƒ ', - 'j': 'jโƒ ', - 'k': 'kโƒ ', - 'l': 'lโƒ ', - 'm': 'mโƒ ', - 'n': 'nโƒ ', - 'o': 'oโƒ ', - 'p': 'pโƒ ', - 'q': 'qโƒ ', - 'r': 'rโƒ ', - 's': 'sโƒ ', - 't': 'tโƒ ', - 'u': 'uโƒ ', - 'v': 'vโƒ ', - 'w': 'wโƒ ', - 'x': 'xโƒ ', - 'y': 'yโƒ ', - 'z': 'zโƒ ', - 'A': 'Aโƒ ', - 'B': 'Bโƒ ', - 'C': 'Cโƒ ', - 'D': 'Dโƒ ', - 'E': 'Eโƒ ', - 'F': 'Fโƒ ', - 'G': 'Gโƒ ', - 'H': 'Hโƒ ', - 'I': 'Iโƒ ', - 'J': 'Jโƒ ', - 'K': 'Kโƒ ', - 'L': 'Lโƒ ', - 'M': 'Mโƒ ', - 'N': 'Nโƒ ', - 'O': 'Oโƒ ', - 'P': 'Pโƒ ', - 'Q': 'Qโƒ ', - 'R': 'Rโƒ ', - 'S': 'Sโƒ ', - 'T': 'Tโƒ ', - 'U': 'Uโƒ ', - 'V': 'Vโƒ ', - 'W': 'Wโƒ ', - 'X': 'Xโƒ ', - 'Y': 'Yโƒ ', - 'Z': 'Zโƒ ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def skyline(text): - style = { - 'a': 'aอ†ฬบ', - 'b': 'bอ†ฬบ', - 'c': 'cอ†ฬบ', - 'd': 'dอ†ฬบ', - 'e': 'eอ†ฬบ', - 'f': 'fอ†ฬบ', - 'g': 'gอ†ฬบ', - 'h': 'hอ†ฬบ', - 'i': 'iอ†ฬบ', - 'j': 'jอ†ฬบ', - 'k': 'kอ†ฬบ', - 'l': 'lอ†ฬบ', - 'm': 'mอ†ฬบ', - 'n': 'nอ†ฬบ', - 'o': 'oอ†ฬบ', - 'p': 'pอ†ฬบ', - 'q': 'qอ†ฬบ', - 'r': 'rอ†ฬบ', - 's': 'sอ†ฬบ', - 't': 'tอ†ฬบ', - 'u': 'uอ†ฬบ', - 'v': 'vอ†ฬบ', - 'w': 'wอ†ฬบ', - 'x': 'xอ†ฬบ', - 'y': 'yอ†ฬบ', - 'z': 'zอ†ฬบ', - 'A': 'Aอ†ฬบ', - 'B': 'Bอ†ฬบ', - 'C': 'Cอ†ฬบ', - 'D': 'Dอ†ฬบ', - 'E': 'Eอ†ฬบ', - 'F': 'Fอ†ฬบ', - 'G': 'Gอ†ฬบ', - 'H': 'Hอ†ฬบ', - 'I': 'Iอ†ฬบ', - 'J': 'Jอ†ฬบ', - 'K': 'Kอ†ฬบ', - 'L': 'Lอ†ฬบ', - 'M': 'Mอ†ฬบ', - 'N': 'Nอ†ฬบ', - 'O': 'Oอ†ฬบ', - 'P': 'Pอ†ฬบ', - 'Q': 'Qอ†ฬบ', - 'R': 'Rอ†ฬบ', - 'S': 'Sอ†ฬบ', - 'T': 'Tอ†ฬบ', - 'U': 'Uอ†ฬบ', - 'V': 'Vอ†ฬบ', - 'W': 'Wอ†ฬบ', - 'X': 'Xอ†ฬบ', - 'Y': 'Yอ†ฬบ', - 'Z': 'Zอ†ฬบ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def arrows(text): - style = { - 'a': 'aอŽ', - 'b': 'bอŽ', - 'c': 'cอŽ', - 'd': 'dอŽ', - 'e': 'eอŽ', - 'f': 'fอŽ', - 'g': 'gอŽ', - 'h': 'hอŽ', - 'i': 'iอŽ', - 'j': 'jอŽ', - 'k': 'kอŽ', - 'l': 'lอŽ', - 'm': 'mอŽ', - 'n': 'nอŽ', - 'o': 'oอŽ', - 'p': 'pอŽ', - 'q': 'qอŽ', - 'r': 'rอŽ', - 's': 'sอŽ', - 't': 'tอŽ', - 'u': 'uอŽ', - 'v': 'vอŽ', - 'w': 'wอŽ', - 'x': 'xอŽ', - 'y': 'yอŽ', - 'z': 'zอŽ', - 'A': 'AอŽ', - 'B': 'BอŽ', - 'C': 'CอŽ', - 'D': 'DอŽ', - 'E': 'EอŽ', - 'F': 'FอŽ', - 'G': 'GอŽ', - 'H': 'HอŽ', - 'I': 'IอŽ', - 'J': 'JอŽ', - 'K': 'KอŽ', - 'L': 'LอŽ', - 'M': 'MอŽ', - 'N': 'NอŽ', - 'O': 'OอŽ', - 'P': 'PอŽ', - 'Q': 'QอŽ', - 'R': 'RอŽ', - 'S': 'SอŽ', - 'T': 'TอŽ', - 'U': 'UอŽ', - 'V': 'VอŽ', - 'W': 'WอŽ', - 'X': 'XอŽ', - 'Y': 'YอŽ', - 'Z': 'ZอŽ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def rvnes(text): - style = { - 'a': 'แˆ', - 'b': 'แŒŒ', - 'c': 'แˆญ', - 'd': 'แ‹•', - 'e': 'แ‰ฟ', - 'f': 'แ‰ป', - 'g': 'แŠ—', - 'h': 'แ‹˜', - 'i': 'แŒŽ', - 'j': 'แŒ‹', - 'k': 'แŒ•', - 'l': 'แˆจ', - 'm': 'แŒ ', - 'n': 'แŠญ', - 'o': 'แ‹', - 'p': 'แ‹จ', - 'q': 'แ‹’', - 'r': 'แ‹ช', - 's': 'แА', - 't': 'แ•', - 'u': 'แˆ', - 'v': 'แˆ€', - 'w': 'แˆ ', - 'x': 'แˆธ', - 'y': 'แˆƒ', - 'z': 'แŒŠ', - 'A': 'แˆ', - 'B': 'แŒŒ', - 'C': 'แˆญ', - 'D': 'แ‹•', - 'E': 'แ‰ฟ', - 'F': 'แ‰ป', - 'G': 'แŠ—', - 'H': 'แ‹˜', - 'I': 'แŒŽ', - 'J': 'แŒ‹', - 'K': 'แŒ•', - 'L': 'แˆจ', - 'M': 'แŒ ', - 'N': 'แŠญ', - 'O': 'แ‹', - 'P': 'แ‹จ', - 'Q': 'แ‹’', - 'R': 'แ‹ช', - 'S': 'แА', - 'T': 'แ•', - 'U': 'แˆ', - 'V': 'แˆ€', - 'W': 'แˆ ', - 'X': 'แˆธ', - 'Y': 'แˆƒ', - 'Z': 'แŒŠ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def strike(text): - style = { - 'a': 'aฬถ', - 'b': 'bฬถ', - 'c': 'cฬถ', - 'd': 'dฬถ', - 'e': 'eฬถ', - 'f': 'fฬถ', - 'g': 'gฬถ', - 'h': 'hฬถ', - 'i': 'iฬถ', - 'j': 'jฬถ', - 'k': 'kฬถ', - 'l': 'lฬถ', - 'm': 'mฬถ', - 'n': 'nฬถ', - 'o': 'oฬถ', - 'p': 'pฬถ', - 'q': 'qฬถ', - 'r': 'rฬถ', - 's': 'sฬถ', - 't': 'tฬถ', - 'u': 'uฬถ', - 'v': 'vฬถ', - 'w': 'wฬถ', - 'x': 'xฬถ', - 'y': 'yฬถ', - 'z': 'zฬถ', - 'A': 'Aฬถ', - 'B': 'Bฬถ', - 'C': 'Cฬถ', - 'D': 'Dฬถ', - 'E': 'Eฬถ', - 'F': 'Fฬถ', - 'G': 'Gฬถ', - 'H': 'Hฬถ', - 'I': 'Iฬถ', - 'J': 'Jฬถ', - 'K': 'Kฬถ', - 'L': 'Lฬถ', - 'M': 'Mฬถ', - 'N': 'Nฬถ', - 'O': 'Oฬถ', - 'P': 'Pฬถ', - 'Q': 'Qฬถ', - 'R': 'Rฬถ', - 'S': 'Sฬถ', - 'T': 'Tฬถ', - 'U': 'Uฬถ', - 'V': 'Vฬถ', - 'W': 'Wฬถ', - 'X': 'Xฬถ', - 'Y': 'Yฬถ', - 'Z': 'Zฬถ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def frozen(text): - style = { - 'a': 'aเผ™', - 'b': 'bเผ™', - 'c': 'cเผ™', - 'd': 'dเผ™', - 'e': 'eเผ™', - 'f': 'fเผ™', - 'g': 'gเผ™', - 'h': 'hเผ™', - 'i': 'iเผ™', - 'j': 'jเผ™', - 'k': 'kเผ™', - 'l': 'lเผ™', - 'm': 'mเผ™', - 'n': 'nเผ™', - 'o': 'oเผ™', - 'p': 'pเผ™', - 'q': 'qเผ™', - 'r': 'rเผ™', - 's': 'sเผ™', - 't': 'tเผ™', - 'u': 'uเผ™', - 'v': 'vเผ™', - 'w': 'wเผ™', - 'x': 'xเผ™', - 'y': 'yเผ™', - 'z': 'zเผ™', - 'A': 'Aเผ™', - 'B': 'Bเผ™', - 'C': 'Cเผ™', - 'D': 'Dเผ™', - 'E': 'Eเผ™', - 'F': 'Fเผ™', - 'G': 'Gเผ™', - 'H': 'Hเผ™', - 'I': 'Iเผ™', - 'J': 'Jเผ™', - 'K': 'Kเผ™', - 'L': 'Lเผ™', - 'M': 'Mเผ™', - 'N': 'Nเผ™', - 'O': 'Oเผ™', - 'P': 'Pเผ™', - 'Q': 'Qเผ™', - 'R': 'Rเผ™', - 'S': 'Sเผ™', - 'T': 'Tเผ™', - 'U': 'Uเผ™', - 'V': 'Vเผ™', - 'W': 'Wเผ™', - 'X': 'Xเผ™', - 'Y': 'Yเผ™', - 'Z': 'Zเผ™' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def bold_gothic(text): - style = { - 'a': '๐–†', - 'b': '๐–‡', - 'c': '๐–ˆ', - 'd': '๐–‰', - 'e': '๐–Š', - 'f': '๐–‹', - 'g': '๐–Œ', - 'h': '๐–', - 'i': '๐–Ž', - 'j': '๐–', - 'k': '๐–', - 'l': '๐–‘', - 'm': '๐–’', - 'n': '๐–“', - 'o': '๐–”', - 'p': '๐–•', - 'q': '๐––', - 'r': '๐–—', - 's': '๐–˜', - 't': '๐–™', - 'u': '๐–š', - 'v': '๐–›', - 'w': '๐–œ', - 'x': '๐–', - 'y': '๐–ž', - 'z': '๐–Ÿ', - 'A': '๐•ฌ', - 'B': '๐•ญ', - 'C': '๐•ฎ', - 'D': '๐•บ', - 'E': '๐•ฐ', - 'F': '๐•ฑ', - 'G': '๐•ฒ', - 'H': '๐•ณ', - 'I': '๐•ด', - 'J': '๐•ต', - 'K': '๐•ถ', - 'L': '๐•ท', - 'M': '๐•ธ', - 'N': '๐•น', - 'O': '๐•บ', - 'P': '๐•ป', - 'Q': '๐•ผ', - 'R': '๐•ฝ', - 'S': '๐•พ', - 'T': '๐•ฟ', - 'U': '๐–€', - 'V': '๐–', - 'W': '๐–‚', - 'X': '๐–ƒ', - 'Y': '๐–„', - 'Z': '๐–…' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - def cloud(text): - style = { - 'a': 'aอกอœ', - 'b': 'bอกอœ', - 'c': 'cอกอœ', - 'd': 'dอกอœ', - 'e': 'eอกอœ', - 'f': 'fอกอœ', - 'g': 'gอกอœ', - 'h': 'hอกอœ', - 'i': 'iอกอœ', - 'j': 'jอกอœ', - 'k': 'kอกอœ', - 'l': 'lอกอœ', - 'm': 'mอกอœ', - 'n': 'nอกอœ', - 'o': 'oอกอœ', - 'p': 'pอกอœ', - 'q': 'qอกอœ', - 'r': 'rอกอœ', - 's': 'sอกอœ', - 't': 'tอกอœ', - 'u': 'uอกอœ', - 'v': 'vอกอœ', - 'w': 'wอกอœ', - 'x': 'xอกอœ', - 'y': 'yอกอœ', - 'z': 'zอกอœ', - 'A': 'Aอกอœ', - 'B': 'Bอกอœ', - 'C': 'Cอกอœ', - 'D': 'Dอกอœ', - 'E': 'Eอกอœ', - 'F': 'Fอกอœ', - 'G': 'Gอกอœ', - 'H': 'Hอกอœ', - 'I': 'Iอกอœ', - 'J': 'Jอกอœ', - 'K': 'Kอกอœ', - 'L': 'Lอกอœ', - 'M': 'Mอกอœ', - 'N': 'Nอกอœ', - 'O': 'Oอกอœ', - 'P': 'Pอกอœ', - 'Q': 'Qอกอœ', - 'R': 'Rอกอœ', - 'S': 'Sอกอœ', - 'T': 'Tอกอœ', - 'U': 'Uอกอœ', - 'V': 'Vอกอœ', - 'W': 'Wอกอœ', - 'X': 'Xอกอœ', - 'Y': 'Yอกอœ', - 'Z': 'Zอกอœ' - } - for i, j in style.items(): - text = text.replace(i, j) - return text - - - diff --git a/plugins/helper_functions/get_file_id.py b/plugins/helper_functions/get_file_id.py deleted file mode 100644 index 556575a..0000000 --- a/plugins/helper_functions/get_file_id.py +++ /dev/null @@ -1,25 +0,0 @@ -from pyrogram.types import Message -from pyrogram.types.messages_and_media import message - - -def get_file_id(msg: Message): - if msg.media: - for message_type in ( - "photo", - "animation", - "audio", - "document", - "video", - "video_note", - "voice", - # "contact", - # "dice", - # "poll", - # "location", - # "venue", - "sticker" - ): - obj = getattr(msg, message_type) - if obj: - setattr(obj, "message_type", message_type) - return obj diff --git a/plugins/helper_functions/last_online_hlpr.py b/plugins/helper_functions/last_online_hlpr.py deleted file mode 100644 index 442843c..0000000 --- a/plugins/helper_functions/last_online_hlpr.py +++ /dev/null @@ -1,21 +0,0 @@ -from pyrogram.types import User -from datetime import datetime - - -def last_online(from_user: User) -> str: - time = "" - if from_user.is_bot: - time += "๐Ÿค– Bot :(" - elif from_user.status == 'recently': - time += "Recently" - elif from_user.status == 'within_week': - time += "Within the last week" - elif from_user.status == 'within_month': - time += "Within the last month" - elif from_user.status == 'long_time_ago': - time += "A long time ago :(" - elif from_user.status == 'online': - time += "Currently Online" - elif from_user.status == 'offline': - time += datetime.fromtimestamp(from_user.last_online_date).strftime("%a, %d %b %Y, %H:%M:%S") - return time diff --git a/plugins/helper_functions/string_handling.py b/plugins/helper_functions/string_handling.py deleted file mode 100644 index 46dbe8b..0000000 --- a/plugins/helper_functions/string_handling.py +++ /dev/null @@ -1,110 +0,0 @@ -import re -import time -from typing import List -from pyrogram.types import Message, InlineKeyboardButton -from info import COMMAND_HAND_LER - - -# NOTE: the url \ escape may cause double escapes -# match * (bold) (don't escape if in url) -# match _ (italics) (don't escape if in url) -# match ` (code) -# match []() (markdown link) -# else, escape *, _, `, and [ -MATCH_MD = re.compile(r'\*(.*?)\*|' - r'_(.*?)_|' - r'`(.*?)`|' - r'(?[*_`\[])') - -# regex to find []() links -> hyperlinks/buttons -LINK_REGEX = re.compile(r'(? (str, List): - # offset = len(args[2]) - len(raw_text) - # set correct offset relative to command + notename - markdown_note = None - if msg.media: - if msg.caption: - markdown_note = msg.caption.markdown - else: - markdown_note = msg.text.markdown - note_data = "" - buttons = [] - if markdown_note is None: - return note_data, buttons - # - if markdown_note.startswith(COMMAND_HAND_LER): - args = markdown_note.split(None, 2) - # use python's maxsplit to separate cmd and args - markdown_note = args[2] - prev = 0 - for match in BTN_URL_REGEX.finditer(markdown_note): - # Check if btnurl is escaped - n_escapes = 0 - to_check = match.start(1) - 1 - while to_check > 0 and markdown_note[to_check] == "\\": - n_escapes += 1 - to_check -= 1 - - # if even, not escaped -> create button - if n_escapes % 2 == 0: - # create a thruple with button label, url, and newline status - if bool(match.group(4)) and buttons: - buttons[-1].append(InlineKeyboardButton( - text=match.group(2), - url=match.group(3) - )) - else: - buttons.append([InlineKeyboardButton( - text=match.group(2), - url=match.group(3) - )]) - note_data += markdown_note[prev:match.start(1)] - prev = match.end(1) - # if odd, escaped -> move along - else: - note_data += markdown_note[prev:to_check] - prev = match.start(1) - 1 - else: - note_data += markdown_note[prev:] - - return note_data, buttons - - -def extract_time(time_val): - if any(time_val.endswith(unit) for unit in ('s', 'm', 'h', 'd')): - unit = time_val[-1] - time_num = time_val[:-1] # type: str - if not time_num.isdigit(): - return None - - if unit == 's': - bantime = int(time.time() + int(time_num)) - elif unit == 'm': - bantime = int(time.time() + int(time_num) * 60) - elif unit == 'h': - bantime = int(time.time() + int(time_num) * 60 * 60) - elif unit == 'd': - bantime = int(time.time() + int(time_num) * 24 * 60 * 60) - else: - # how even...? - return None - return bantime - else: - return None - - -def format_welcome_caption(html_string, chat_member): - return html_string.format( - dc_id=chat_member.dc_id, - first_name=chat_member.first_name, - id=chat_member.id, - last_name=chat_member.last_name, - mention=chat_member.mention, - username=chat_member.username - ) diff --git a/plugins/helpers/arrow.py b/plugins/helpers/arrow.py deleted file mode 100644 index a000a49..0000000 --- a/plugins/helpers/arrow.py +++ /dev/null @@ -1,27 +0,0 @@ -# codes added by @lallu_tg -# use with proper credits - -from pyrogram import Client, filters, enums -from info import COMMAND_HAND_LER -from plugins.helper_functions.cust_p_filters import f_onw_fliter - -# EMOJI CONSTANTS -DART_E_MOJI = "๐ŸŽฏ" -# EMOJI CONSTANTS - - -@Client.on_message( - filters.command(["throw", "dart"], COMMAND_HAND_LER) & - f_onw_fliter -) -async def throw_dart(client, message): - """ /throw an @AnimatedDart """ - rep_mesg_id = message.id - if message.reply_to_message: - rep_mesg_id = message.reply_to_message.id - await client.send_dice( - chat_id=message.chat.id, - emoji=DART_E_MOJI, - disable_notification=True, - reply_to_message_id=rep_mesg_id - ) diff --git a/plugins/helpers/country.py b/plugins/helpers/country.py deleted file mode 100644 index fbbda6b..0000000 --- a/plugins/helpers/country.py +++ /dev/null @@ -1,43 +0,0 @@ -from countryinfo import CountryInfo -from pyrogram import filters, Client -from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery -from Script import script - -@Client.on_message(filters.command(["country"])) -async def country_info(bot, update): - country = update.text.split(" ", 1)[1] - country = CountryInfo(country) - info = f"""๐–ข๐—ˆ๐—Ž๐—‡๐—๐—‹๐—’ ๐–จ๐—‡๐–ฟ๐—ˆ๐—‹๐—†๐–บ๐—๐—‚๐—ˆ๐—‡ -๐–ญ๐–บ๐—†๐–พ : {country.name()} -๐–ญ๐–บ๐—๐—‚๐—๐–พ ๐–ญ๐–บ๐—†๐–พ : {country.native_name()} -๐–ข๐–บ๐—‰๐—‚๐—๐–บ๐—… : {country.capital()} -Population : {country.population()} -๐–ฑ๐–พ๐—€๐—‚๐—ˆ๐—‡ : {country.region()} -๐–ฒ๐—Ž๐–ป ๐–ฑ๐–พ๐—€๐—‚๐—ˆ๐—‡ : {country.subregion()} -๐–ณ๐—ˆ๐—‰ ๐–ซ๐–พ๐—๐–พ๐—… ๐–ฃ๐—ˆ๐—†๐–บ๐—‚๐—‡๐—Œ : {country.tld()} -๐–ข๐–บ๐—…๐—…๐—‚๐—‡๐—€ ๐–ข๐—ˆ๐–ฝ๐–พ๐—Œ : {country.calling_codes()} -๐–ข๐—Ž๐—‹๐—‹๐–พ๐—‡๐–ผ๐—‚๐–พ๐—Œ : {country.currencies()} -๐–ฑ๐–พ๐—Œ๐—‚๐–ฝ๐–พ๐—‡๐–ผ๐–พ : {country.demonym()} -๐–ณ๐—‚๐—†๐–พ๐—“๐—ˆ๐—‡๐–พ : {country.timezones()} -""" - country_name = country.name() - country_name = country_name.replace(" ", "+") - buttons=[[ - InlineKeyboardButton("แดกษชแด‹ษชแด˜แด‡แด…ษชแด€", url=f"{country.wiki()}"), - InlineKeyboardButton("ษขแดแดษขสŸแด‡", url=f"https://www.google.com/search?q={country_name}") - ],[ - InlineKeyboardButton('แด„สŸแดsแด‡', callback_data='close_data') - ]] - try: - await update.reply_photo( - photo="https://telegra.ph/file/834750cfadc32b359b40c.jpg", - caption=info, - reply_markup=InlineKeyboardMarkup(buttons), - quote=True - ) - except Exception as error: - await update.reply_text( - text=error, - disable_web_page_preview=True, - quote=True - ) diff --git a/plugins/helpers/dice.py b/plugins/helpers/dice.py deleted file mode 100644 index f77e172..0000000 --- a/plugins/helpers/dice.py +++ /dev/null @@ -1,27 +0,0 @@ -# codes added by @lallu_tg -# use with proper credits - -from pyrogram import Client, filters, enums -from info import COMMAND_HAND_LER -from plugins.helper_functions.cust_p_filters import f_onw_fliter - -# EMOJI CONSTANTS -DICE_E_MOJI = "๐ŸŽฒ" -# EMOJI CONSTANTS - - -@Client.on_message( - filters.command(["roll", "dice"], COMMAND_HAND_LER) & - f_onw_fliter -) -async def roll_dice(client, message): - """ @RollaDie """ - rep_mesg_id = message.id - if message.reply_to_message: - rep_mesg_id = message.reply_to_message.id - await client.send_dice( - chat_id=message.chat.id, - emoji=DICE_E_MOJI, - disable_notification=True, - reply_to_message_id=rep_mesg_id - ) diff --git a/plugins/helpers/fonts.py b/plugins/helpers/fonts.py deleted file mode 100644 index 6899f3e..0000000 --- a/plugins/helpers/fonts.py +++ /dev/null @@ -1,175 +0,0 @@ -from pyrogram import Client, filters -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, CallbackQuery -from plugins.helper_functions.fonts_func import Fonts - - -@Client.on_message(filters.private & filters.command(["font"])) -async def style_buttons(c, m, cb=False): - buttons = [[ - InlineKeyboardButton('๐šƒ๐šข๐š™๐šŽ๐š ๐š›๐š’๐š๐šŽ๐š›', callback_data='style+typewriter'), - InlineKeyboardButton('๐•†๐•ฆ๐•ฅ๐•๐•š๐•Ÿ๐•–', callback_data='style+outline'), - InlineKeyboardButton('๐’๐ž๐ซ๐ข๐Ÿ', callback_data='style+serif'), - ],[ - InlineKeyboardButton('๐‘บ๐’†๐’“๐’Š๐’‡', callback_data='style+bold_cool'), - InlineKeyboardButton('๐‘†๐‘’๐‘Ÿ๐‘–๐‘“', callback_data='style+cool'), - InlineKeyboardButton('Sแดแด€สŸสŸ Cแด€แด˜s', callback_data='style+small_cap'), - ],[ - InlineKeyboardButton('๐“ˆ๐’ธ๐“‡๐’พ๐“…๐“‰', callback_data='style+script'), - InlineKeyboardButton('๐“ผ๐“ฌ๐“ป๐“ฒ๐“น๐“ฝ', callback_data='style+script_bolt'), - InlineKeyboardButton('แต—โฑโฟสธ', callback_data='style+tiny'), - ],[ - InlineKeyboardButton('แ‘•Oแ—ฐIแ‘•', callback_data='style+comic'), - InlineKeyboardButton('๐—ฆ๐—ฎ๐—ป๐˜€', callback_data='style+sans'), - InlineKeyboardButton('๐™Ž๐™–๐™ฃ๐™จ', callback_data='style+slant_sans'), - ],[ - InlineKeyboardButton('๐˜š๐˜ข๐˜ฏ๐˜ด', callback_data='style+slant'), - InlineKeyboardButton('๐–ฒ๐–บ๐—‡๐—Œ', callback_data='style+sim'), - InlineKeyboardButton('โ’ธ๏ธŽโ’พ๏ธŽโ“‡๏ธŽโ’ธ๏ธŽโ“๏ธŽโ’บ๏ธŽโ“ˆ๏ธŽ', callback_data='style+circles') - ],[ - InlineKeyboardButton('๐Ÿ…’๏ธŽ๐Ÿ…˜๏ธŽ๐Ÿ…ก๏ธŽ๐Ÿ…’๏ธŽ๐Ÿ…›๏ธŽ๐Ÿ…”๏ธŽ๐Ÿ…ข๏ธŽ', callback_data='style+circle_dark'), - InlineKeyboardButton('๐”Š๐”ฌ๐”ฑ๐”ฅ๐”ฆ๐” ', callback_data='style+gothic'), - InlineKeyboardButton('๐•ฒ๐–”๐–™๐–๐–Ž๐–ˆ', callback_data='style+gothic_bolt'), - ],[ - InlineKeyboardButton('Cอกอœlอกอœoอกอœuอกอœdอกอœsอกอœ', callback_data='style+cloud'), - InlineKeyboardButton('Hฬ†ฬˆaฬ†ฬˆpฬ†ฬˆpฬ†ฬˆyฬ†ฬˆ', callback_data='style+happy'), - InlineKeyboardButton('Sฬ‘ฬˆaฬ‘ฬˆdฬ‘ฬˆ', callback_data='style+sad'), - ],[ - InlineKeyboardButton('Next โžก๏ธ', callback_data="nxt") - ]] - if not cb: - if ' ' in m.text: - title = m.text.split(" ", 1)[1] - await m.reply_text(title, reply_markup=InlineKeyboardMarkup(buttons), reply_to_message_id=m.id) - else: - await m.reply_text(text="Enter Any Text Eg:- `/font [text]`") - else: - await m.answer() - await m.message.edit_reply_markup(InlineKeyboardMarkup(buttons)) - - -@Client.on_callback_query(filters.regex('^nxt')) -async def nxt(c, m): - if m.data == "nxt": - buttons = [[ - InlineKeyboardButton('๐Ÿ‡ธโ€Š๐Ÿ‡ตโ€Š๐Ÿ‡ชโ€Š๐Ÿ‡จโ€Š๐Ÿ‡ฎโ€Š๐Ÿ‡ฆโ€Š๐Ÿ‡ฑโ€Š', callback_data='style+special'), - InlineKeyboardButton('๐Ÿ…‚๐Ÿ…€๐Ÿ…„๐Ÿ„ฐ๐Ÿ…๐Ÿ„ด๐Ÿ…‚', callback_data='style+squares'), - InlineKeyboardButton('๐Ÿ†‚๏ธŽ๐Ÿ†€๏ธŽ๐Ÿ†„๏ธŽ๐Ÿ…ฐ๏ธŽ๐Ÿ†๏ธŽ๐Ÿ…ด๏ธŽ๐Ÿ†‚๏ธŽ', callback_data='style+squares_bold'), - ],[ - InlineKeyboardButton('๊ช–๊ช€แฆ”๊ช–๊ชถ๊ชŠแฅด๐“ฒ๊ช–', callback_data='style+andalucia'), - InlineKeyboardButton('็ˆชๅ‚ๅ‡ แ˜œๅ‚', callback_data='style+manga'), - InlineKeyboardButton('Sฬพtฬพiฬพnฬพkฬพyฬพ', callback_data='style+stinky'), - ],[ - InlineKeyboardButton('Bอฆฬฅuอฆฬฅbอฆฬฅbอฆฬฅlอฆฬฅeอฆฬฅsอฆฬฅ', callback_data='style+bubbles'), - InlineKeyboardButton('UอŸnอŸdอŸeอŸrอŸlอŸiอŸnอŸeอŸ', callback_data='style+underline'), - InlineKeyboardButton('๊’’๊๊€ท๊Œฉ๊Œƒ๊€Ž๊…', callback_data='style+ladybug'), - ],[ - InlineKeyboardButton('Rา‰aา‰yา‰sา‰', callback_data='style+rays'), - InlineKeyboardButton('Bาˆiาˆrาˆdาˆsาˆ', callback_data='style+birds'), - InlineKeyboardButton('Sฬธlฬธaฬธsฬธhฬธ', callback_data='style+slash'), - ],[ - InlineKeyboardButton('sโƒ tโƒ oโƒ pโƒ ', callback_data='style+stop'), - InlineKeyboardButton('Sอ†ฬบkอ†ฬบyอ†ฬบlอ†ฬบiอ†ฬบnอ†ฬบeอ†ฬบ', callback_data='style+skyline'), - InlineKeyboardButton('AอŽrอŽrอŽoอŽwอŽsอŽ', callback_data='style+arrows'), - ],[ - InlineKeyboardButton('แ‹ชแˆ€แŠญแ‰ฟแА', callback_data='style+qvnes'), - InlineKeyboardButton('Sฬถtฬถrฬถiฬถkฬถeฬถ', callback_data='style+strike'), - InlineKeyboardButton('Fเผ™rเผ™oเผ™zเผ™eเผ™nเผ™', callback_data='style+frozen') - ],[ - InlineKeyboardButton('โฌ…๏ธ Back', callback_data='nxt+0'), - InlineKeyboardButton('๐Ÿ” Close', callback_data='close_data') - ]] - await m.answer() - await m.message.edit_reply_markup(InlineKeyboardMarkup(buttons)) - else: - await style_buttons(c, m, cb=True) - -@Client.on_callback_query(filters.regex('^style')) -async def style(c, m): - await m.answer() - cmd, style = m.data.split('+') - - if style == 'typewriter': - cls = Fonts.typewriter - if style == 'outline': - cls = Fonts.outline - if style == 'serif': - cls = Fonts.serief - if style == 'bold_cool': - cls = Fonts.bold_cool - if style == 'cool': - cls = Fonts.cool - if style == 'small_cap': - cls = Fonts.smallcap - if style == 'script': - cls = Fonts.script - if style == 'script_bolt': - cls = Fonts.bold_script - if style == 'tiny': - cls = Fonts.tiny - if style == 'comic': - cls = Fonts.comic - if style == 'sans': - cls = Fonts.san - if style == 'slant_sans': - cls = Fonts.slant_san - if style == 'slant': - cls = Fonts.slant - if style == 'sim': - cls = Fonts.sim - if style == 'circles': - cls = Fonts.circles - if style == 'circle_dark': - cls = Fonts.dark_circle - if style == 'gothic': - cls = Fonts.gothic - if style == 'gothic_bolt': - cls = Fonts.bold_gothic - if style == 'cloud': - cls = Fonts.cloud - if style == 'happy': - cls = Fonts.happy - if style == 'sad': - cls = Fonts.sad - if style == 'special': - cls = Fonts.special - if style == 'squares': - cls = Fonts.square - if style == 'squares_bold': - cls = Fonts.dark_square - if style == 'andalucia': - cls = Fonts.andalucia - if style == 'manga': - cls = Fonts.manga - if style == 'stinky': - cls = Fonts.stinky - if style == 'bubbles': - cls = Fonts.bubbles - if style == 'underline': - cls = Fonts.underline - if style == 'ladybug': - cls = Fonts.ladybug - if style == 'rays': - cls = Fonts.rays - if style == 'birds': - cls = Fonts.birds - if style == 'slash': - cls = Fonts.slash - if style == 'stop': - cls = Fonts.stop - if style == 'skyline': - cls = Fonts.skyline - if style == 'arrows': - cls = Fonts.arrows - if style == 'qvnes': - cls = Fonts.rvnes - if style == 'strike': - cls = Fonts.strike - if style == 'frozen': - cls = Fonts.frozen - - r, oldtxt = m.message.reply_to_message.text.split(None, 1) - new_text = cls(oldtxt) - try: - await m.message.edit_text(f"`{new_text}`\n\n๐Ÿ‘† Click To Copy", reply_markup=m.message.reply_markup) - except Exception as e: - print(e) diff --git a/plugins/helpers/goal.py b/plugins/helpers/goal.py deleted file mode 100644 index 6a4df80..0000000 --- a/plugins/helpers/goal.py +++ /dev/null @@ -1,25 +0,0 @@ - -from pyrogram import Client, filters, enums -from info import COMMAND_HAND_LER -from plugins.helper_functions.cust_p_filters import f_onw_fliter - -# EMOJI CONSTANTS -GOAL_E_MOJI = "โšฝ" -# EMOJI CONSTANTS - - -@Client.on_message( - filters.command(["goal", "shoot"], COMMAND_HAND_LER) & - f_onw_fliter -) -async def roll_dice(client, message): - """ @Goal """ - rep_mesg_id = message.id - if message.reply_to_message: - rep_mesg_id = message.reply_to_message.id - await client.send_dice( - chat_id=message.chat.id, - emoji=GOAL_E_MOJI, - disable_notification=True, - reply_to_message_id=rep_mesg_id - ) diff --git a/plugins/helpers/list.py b/plugins/helpers/list.py deleted file mode 100644 index dbe15e0..0000000 --- a/plugins/helpers/list.py +++ /dev/null @@ -1,109 +0,0 @@ -list = { -"afrikaans":"af", -"albanian":"sq", -"amharic":"am", -"arabic":"ar", -"armenian":"hy", -"azerbaijani":"az", -"basque":"eu", -"belarusian":"be", -"bengali":"bn", -"bosnian":"bs", -"bulgarian":"bg", -"catalan":"ca", -"cebuano":"ceb", -"chinese": "zh", -"corsican":"co", -"croatian":"hr", -"czech":"cs", -"danish":"da", -"dutch":"nl", -"english":"en", -"esperanto":"eo", -"estonian":"et", -"finnish":"fi", -"french":"fr", -"frisian":"fy", -"galician":"gl", -"georgian":"ka", -"german":"de", -"greek":"el", -"gujarati":"gu", -"haitian creole":"ht", -"hausa":"ha", -"hawaiian":"haw", -"hebrew":"he", -"hindi":"hi", -"hmong":"hmn", -"hungarian":"hu", -"icelandic":"is", -"igbo":"ig", -"indonesian":"id", -"irish":"ga", -"italian":"it", -"japanese":"ja", -"javanese":"jv", -"kannada":"kn", -"kazakh":"kk", -"khmer":"km", -"kinyarwanda":"rw", -"korean":"ko", -"kurdish":"ku", -"kyrgyz":"ky", -"lao":"lo", -"latin":"la", -"latvian":"lv", -"lithuanian":"lt", -"luxembourgish":"lb", -"macedonian":"mk", -"malagasy":"mg", -"malay":"ms", -"malayalam":"ml", -"maltese":"mt", -"maori":"mi", -"marathi":"mr", -"mongolian":"mn", -"myanmar":"my", -"nepali":"ne", -"norwegian":"no", -"nyanja":"ny", -"odia":"or", -"pashto":"ps", -"persian":"fa", -"polish":"pl", -"portuguese":"pt", -"punjabi":"pa", -"romanian":"ro", -"russian":"ru", -"samoan":"sm", -"scots gaelic":"gd", -"serbian":"sr", -"sesotho":"st", -"shona":"sn", -"sindhi":"sd", -"sinhala":"si", -"slovak":"sk", -"slovenian":"sl", -"somali":"so", -"spanish":"es", -"sundanese":"su", -"swahili":"sw", -"swedish":"sv", -"tagalog":"tl", -"tajik":"tg", -"tamil":"ta", -"tatar":"tt", -"telugu":"te", -"thai":"th", -"turkish":"tr", -"turkmen":"tk", -"ukrainian":"uk", -"urdu":"ur", -"uyghur":"ug", -"uzbek":"uz", -"vietnamese":"vi", -"welsh":"cy", -"xhosa":"xh", -"yiddish":"yi", -"yoruba":"yo", -"zulu":"zu"} diff --git a/plugins/helpers/luck.py b/plugins/helpers/luck.py deleted file mode 100644 index a159aaa..0000000 --- a/plugins/helpers/luck.py +++ /dev/null @@ -1,25 +0,0 @@ - -from pyrogram import Client, filters, enums -from info import COMMAND_HAND_LER -from plugins.helper_functions.cust_p_filters import f_onw_fliter - -# LUCK------------ https://telegram.me/Josprojects ------------ # - -# EMOJI CONSTANTS -TRY_YOUR_LUCK = "๐ŸŽฐ" -# EMOJI CONSTANTS - -@Client.on_message( - filters.command(["luck", "cownd"]) -) -async def luck_cownd(client, message): - """ /luck an @animatedluck """ - rep_mesg_id = message.id - if message.reply_to_message: - rep_mesg_id = message.reply_to_message.id - await client.send_dice( - chat_id=message.chat.id, - emoji=TRY_YOUR_LUCK, - disable_notification=True, - reply_to_message_id=rep_mesg_id - ) diff --git a/plugins/helpers/ping.py b/plugins/helpers/ping.py deleted file mode 100644 index 60ba3ae..0000000 --- a/plugins/helpers/ping.py +++ /dev/null @@ -1,32 +0,0 @@ -"""Telegram Ping / Pong Speed -Syntax: .ping""" - -import time -import random -from pyrogram import Client, filters -from info import COMMAND_HAND_LER -from plugins.helper_functions.cust_p_filters import f_onw_fliter - -# -- Constants -- # -ALIVE = "เดšเดคเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เดฎเตเดคเตเดคเต‡ เด‡เดตเดฟเดŸเต† เดคเดจเตเดจเต† เด‰เดฃเตเดŸเต.. เดจเดฟเดจเด•เตเด•เต เด‡เดชเตเดชเตŠ เดŽเดจเตเดจเต‹เดŸเต เด’เดฐเต เดธเตเดจเต‡เดนเดตเตเด‚ เด‡เดฒเตเดฒ. เด•เตŠเดณเตเดณเดพเด‚.. เดจเต€ เดชเดพเดดเต† เดชเต‹เดฒเต†เดฏเต‡ เด…เดฒเตเดฒ เดฎเดพเดฑเดฟเดชเต‹เดฏเดฟ..๐Ÿ˜” เด‡เดŸเด•เตเด•เต เดŽเด™เตเด•เดฟเดฒเตเด‚ เดšเตเดฎเตเดฎเดพ เด’เดจเตเดจเต /start เดšเต†เดฏเตเดคเต เดจเต‹เด•เตเด•เต..๐Ÿ™‚" -# -- Constants End -- # - - -@Client.on_message(filters.command("alive", COMMAND_HAND_LER) & f_onw_fliter) -async def check_alive(_, message): - await message.reply_text(ALIVE) - - -@Client.on_message(filters.command("ping", COMMAND_HAND_LER) & f_onw_fliter) -async def ping(_, message): - start_t = time.time() - rm = await message.reply_text("...") - end_t = time.time() - time_taken_s = (end_t - start_t) * 1000 - await rm.edit(f"Pong!\n{time_taken_s:.3f} ms\n\nยฉCINEMALA.COMโ„ข") - - - - - - diff --git a/plugins/helpers/runs.py b/plugins/helpers/runs.py deleted file mode 100644 index 5b6e560..0000000 --- a/plugins/helpers/runs.py +++ /dev/null @@ -1,51 +0,0 @@ -import random -from pyrogram import Client, filters, enums -from info import COMMAND_HAND_LER -from plugins.helper_functions.cust_p_filters import f_onw_fliter - - -RUN_STRINGS = ( - "เด“.. เดงเดฟเด•เตเด•เดพเดฐเด‚... เดชเดดเต‡เดชเต‹เดฒเต† เดคเดจเตเดจเต†....เด’เดฐเต เดฎเดพเดฑเตเดฑเต‹เดฎเดฟเดฒเตเดฒ.....เดšเตเดฎเตเดฎเดพเดคเดฒเตเดฒ เด—เดคเดฟ เดชเดฟเดŸเดฟเด•เตเด•เดพเดคเตเดคเดคเต....!!!", - "เด…เดณเตเดณเดพ... เดชเดฟเดณเตเดณเต‡เดฐเตเดŸเต† เด“เดฐเต‹... เดชเต†เดทเดจเต†...", - "เดŽเดจเดฟเด•เตเด•เต เดŽเดดเตเดคเดพเตป เด…เดฒเตเดฒเต† เด…เดฑเดฟเดฏเต‚ เดธเดพเดฑเต‡.... เดตเดพเดฏเดฟเด•เตเด•เดพเตป เด…เดฑเดฟเดฏเดฟเดฒเตเดฒเดฒเตเดฒเต‹....", - "เด‡เดจเตเดจเต เด‡เดจเดฟ เดจเต€ เดฎเดฟเดฃเตเดŸเดฐเตเดคเต... เด‡เดจเตเดจเดคเตเดคเต† เด•เต‹เดŸเตเดŸ เด•เดดเดฟเดžเตเดžเต.....", - "เดšเดพเดฐเดฎเดพเดฃเต†เดจเตเดจเต เด•เดฐเตเดคเดฟ เดšเต†เด•เดฏเดพเตป เดจเดฟเตฝเด•เตเด•เดฃเตเดŸ เด•เดจเตฝ เด•เต†เดŸเตเดŸเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตŠเดณเตเดณเตเด‚.", - "เด’เดฑเตเดฑ เดœเต€เดตเดฟเดคเดฎเต‡ เด‰เดณเตเดณเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดฟเด•เตเด•เต‹, เดธเตเดตเตผเด—เตเด—เดฎเดฟเดฒเตเดฒ เดจเดฐเด•เดฎเดฟเดฒเตเดฒ, 'เด’เดฑเตเดฑ เดœเต€เดตเดฟเดคเด‚', เด…เดคเต เดŽเดตเดฟเดŸเต† เดŽเด™เตเด™เดจเต† เดตเต‡เดฃเดฎเต†เดจเตเดจเต เด…เดตเดจเดตเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚", - "เดตเดพเดŸเตเดŸเต เดŽ เดฌเต‹เด‚เดฌเต†เดธเตเดฑเตเดฑเดฟเด•เต เดŽเด•เตเดธเตเดชเตเดฒเต‹เดทเตป! เดธเดšเต เดŽ เดŸเต†เดฑเดฟเดซเดฟเด•เต เดกเดฟเดธเตเด•เตเดฒเต‹เดธเต!!", - "เด—เต‹ เดŽเดตเต‡ เดธเตเดŸเตเดชเตเดชเดฟเดกเต เด‡เตป เดฆเดฟ เดนเต—เดธเต เด“เดซเต เดฎเตˆ เดตเตˆเดซเตโ€Œ เด†เตปเดกเต เดกเต‹เดŸเตเดŸเตผ เดฏเต‚เดตเดฟเตฝ เดจเต‹เดŸเตเดŸเต เดธเดฟ เดŽเดจเดฟ เดฎเดฟเดจเดฟเดฑเตเดฑเต เด“เดซเต เดฆเดฟ เดŸเตเดกเต‡... เด‡เดฑเด™เตเด™เดฟ เดชเต‹เดŸเดพ..", - "เด เด•เดพเตป เดกเต เดฆเดพเดฑเตเดฑเตโ€Œ เดกเต เด•เดพเตป เด เดฆเดพเดฑเตเดฑเตโ€Œ", - "เด•เตเดฐเต€เด‚ เดฌเดฟเดธเตเด•เดฑเตเดฑเดฟเตฝ เด•เตเดฐเต€เด‚ เด‰เดฃเตเดŸเดจเตเดจเต เด•เดฐเตเดคเดฟ เดŸเตˆเด—เตผ เดฌเดฟเดธเตเด•เดฑเตเดฑเดฟเตฝ เดŸเตˆเด—เตผ เด‰เดฃเตเดŸเดพเด•เดฃเดฎเต†เดจเตเดจเดฟเดฒเตเดฒ. เดชเดฃเดฟ เดชเดพเดณเตเด‚ เดฎเต‹เดจเต†...", - "เดชเดŸ เดชเต‡เดŸเดฟเดšเตเดšเต เดชเดจเตเดคเดณเดคเตเดคเต เดšเต†เดจเตเดจเดชเตเดชเต‹ เดชเดจเตเดคเต‹เด‚ เด•เตเดคเตเดคเดฟ เดชเดŸ เดชเดจเตเดคเดณเดคเตเดคเต‹เดŸเตเดŸเต†เดจเตเดจเต เดชเดฑเดžเตเดž เดชเต‹เดฒเต† เด†เดฏเดฒเตเดฒเต‹.", - "เดŽเดจเตเดฑ เด•เตผเดคเตเดคเดพเดตเต†.... เดŽเดจเตเดจเต† เดจเต€ เดจเดฒเตเดฒเดตเดจเดพเด•เดพเตป เดธเดฎเตเดฎเดคเดฟเด•เตเด•เต‚เดฒเตเดฒ เด…เดฒเตเดฒเต†.", - "เด•เดพเตผ เดŽเตปเดœเดฟเตป เด”เดŸเตเดŸเต เด•เด‚เดชเตเดฒเต€เดฑเตเดฑเตโ€Œเดฒเดฟ......", - "เดคเดณเตเดณเต† เด•เดฒเดฟเดชเตเดชเต เดคเต€เดฐเดฃเดฟเดฒเตเดฒเดฒเตเดฒเต‹!!", - "เดชเดพเดคเดฟเดฐเดพเดคเตเดฐเดฟเด•เตเด•เต เดจเดฟเดจเตเดฑเต† เด…เดšเตเด›เตป เด‰เดฃเตเดŸเดพเด•เตเด•เดฟ เดตเต†เดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต‹ เดชเตŠเดฑเต‹เดŸเตเดŸเดฏเตเด‚ เดšเดฟเด•เตเด•เดจเตเด‚....", - "เด“ เดชเดฟเดจเตเดจเต† เดจเต€ เด’เด•เตเด•เต† เดชเตเดฐเต‡เดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เดชเตเดฐเดฃเดฏเด‚.... เดจเดฎเตเดฎเตพ เด’เด•เตเด•เต† เดชเตเดฐเต‡เดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เด•เดฎเตเดชเดฟ....", - "เดฆเตˆเดตเดฎเต‡ เดŽเดจเตเดจเต† เดฎเดพเดคเตเดฐเด‚ เดฐเด•เตเดทเดฟเด•เตเด•เดฃเต‡....", - "เด…เดตเดณเต† เด“เตผเดคเตเดคเต เด•เตเดŸเดฟเดšเตเดš เด•เดณเตเดณเตเด‚ เดจเดจเดžเตเดž เดฎเดดเดฏเตเด‚ เดตเต‡เดธเตเดฑเตเดฑเต....", - "เด‡เดคเตเดฐเต‡เด‚ เด•เดพเดฒเด‚ เดŽเดตเดฟเดŸเต† เด†เดฏเดฟเดฐเตเดจเตเดจเต....!", - "เด‡เตปเด—เตเดฒเต€เดทเต เดคเต€เดฐเต† เดชเดฟเดŸเดฟ เด‡เดฒเตเดฒ เด…เดฒเตเดฒเต†....", - "เด†เตพ เดฆเดฟ เดกเตเดฐเต€เด‚เดธเตโ€Œ เดฒเตˆเด•เตโ€Œ เดŸเตเดตเดฟเด™เตเด•เดฟเตฝ เดธเตเดฑเตเดฑเดพเตผเดธเต...", - "เดŽเดจเตเดฑเต† เดชเตเดฐเดพเดจเตเดคเตป เดฎเตเดคเตเดคเดชเตเดชเดพ เด…เดตเดจเต† เด’เดฐเต เดตเดดเดฟเดฏเดพเด•เตเด•เดฟ เดคเดฐเดฃเต‡", - "เดชเต†เด™เตเด™เดณเต† เด•เต†เดŸเตเดŸเดฟเดฏ เดธเตเดคเตเดฐเต€เดงเดจ เดคเตเด• เดคเดฐเตเดฎเต‹ เด…เดณเดฟเดฏเดพ", - "เดจเต€ เดตเดฒเตเดฒเดพเดคเต† เด•เตเดทเต€เดฃเดฟเดšเตเดšเต เดชเตŠเดฏเดฟ", - "เด•เดฃเตเดฃเดฟเดฒเต†เดฃเตเดฃเดฏเตŠเดดเดฟเดšเตเดšเต เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดตเดพเดฏเดฟเดฐเตเดจเตเดจเดณเดฟเดฏเดพ.", - "เดšเต†เดฒเตเดฒเดพเด•เตเด•เดฃเตเดŸเต เดŽเดจเตเดจเดฟเดšเตเดšเต เดชเต‹เดŸเดพ เดคเดŸเดฟ.เดฏเดพ .\ - เดทเดŸเตเดŸเต เด‰เด’ เดฏเตเดตเตผ เดฎเต—เดคเต เดฌเตเดฒเดกเดฟ gramavasis.", - "เดชเต‹เดฏเดฟ เดšเดพเดตเดŸ .\ - เดจเดฟเดจเตเดจเต† เด•เตŠเดฃเตเดŸเต เดšเดพเดตเดพเตป patto.", - "เดจเดฟเดจเตเดจเต† เด•เตŠเดฃเตเดŸเต เดจเดพเดŸเตเดŸเตเด•เดพเตผเด•เตเด•เตเด‚ เด—เตเดฃเต‹เดฒเตเดฒเตเดฏ เดตเดฟเดŸเตเดŸเตเด•เดพเตผเด•เตเด•เตเด‚ เด—เตเดฃเต‹เดฒเตเดฒเตเดฏ เดŽเดจเตเดคเดฟเดจเดพ เด‡เด™เตเด™เดจเต† เดจเดพเดฃเด‚ เด•เต‡เดŸเตเดŸเต เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเดŸ เดชเดพเดŸเต เดตเดพเดดเต† เดšเต†เด™เตเด•เดคเดณเดฟ เดตเดพเดด .", -) - - -@Client.on_message( - filters.command("runs", COMMAND_HAND_LER) & - f_onw_fliter -) -async def runs(_, message): - """ /runs strings """ - effective_string = random.choice(RUN_STRINGS) - if message.reply_to_message: - await message.reply_to_message.reply_text(effective_string) - else: - await message.reply_text(effective_string) diff --git a/plugins/helpers/song.py b/plugins/helpers/song.py deleted file mode 100644 index f4a4504..0000000 --- a/plugins/helpers/song.py +++ /dev/null @@ -1,158 +0,0 @@ -from __future__ import unicode_literals - -import os -import requests -import aiohttp -import yt_dlp -import asyncio -import math -import time - -import wget -import aiofiles - -from pyrogram import filters, Client, enums -from pyrogram.errors import FloodWait, MessageNotModified -from pyrogram.types import Message -from youtube_search import YoutubeSearch -from youtubesearchpython import SearchVideos -from yt_dlp import YoutubeDL -import youtube_dl -import requests - -def time_to_seconds(time): - stringt = str(time) - return sum(int(x) * 60 ** i for i, x in enumerate(reversed(stringt.split(':')))) - - -@Client.on_message(filters.command('song')) -def song(client, message): - - user_id = message.from_user.id - user_name = message.from_user.first_name - rpk = "["+user_name+"](tg://user?id="+str(user_id)+")" - - query = '' - for i in message.command[1:]: - query += ' ' + str(i) - print(query) - m = message.reply("**ั•ั”ฮฑrchรญng ั‡ฯƒur ั•ฯƒng...!**") - ydl_opts = {"format": "bestaudio[ext=m4a]"} - try: - results = YoutubeSearch(query, max_results=1).to_dict() - link = f"https://youtube.com{results[0]['url_suffix']}" - #print(results) - title = results[0]["title"][:40] - thumbnail = results[0]["thumbnails"][0] - thumb_name = f'thumb{title}.jpg' - thumb = requests.get(thumbnail, allow_redirects=True) - open(thumb_name, 'wb').write(thumb.content) - - - performer = f"[Elsa - ๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผโ„ข]" - duration = results[0]["duration"] - url_suffix = results[0]["url_suffix"] - views = results[0]["views"] - - except Exception as e: - m.edit( - "**๐™ต๐™พ๐š„๐™ฝ๐™ณ ๐™ฝ๐™พ๐šƒ๐™ท๐™ธ๐™ฝ๐™ถ ๐™ฟ๐™ป๐™ด๐™ฐ๐š‚๐™ด ๐™ฒ๐™พ๐š๐š๐™ด๐™ฒ๐šƒ ๐šƒ๐™ท๐™ด ๐š‚๐™ฟ๐™ด๐™ป๐™ป๐™ธ๐™ฝ๐™ถ ๐™พ๐š ๐š‚๐™ด๐™ฐ๐š๐™ฒ๐™ท ๐™ฐ๐™ฝ๐šˆ ๐™พ๐šƒ๐™ท๐™ด๐š ๐š‚๐™พ๐™ฝ๐™ถ**" - ) - print(str(e)) - return - m.edit("**dฯƒwnlฯƒฮฑdรญng ั‡ฯƒur ั•ฯƒng...!**") - try: - with yt_dlp.YoutubeDL(ydl_opts) as ydl: - info_dict = ydl.extract_info(link, download=False) - audio_file = ydl.prepare_filename(info_dict) - ydl.process_info(info_dict) - rep = '**๐š‚๐š„๐™ฑ๐š‚๐™ฒ๐š๐™ธ๐™ฑ๐™ด โ€บโ€บ [๐Ÿ แด„สœแด€ษดษดแด‡สŸ ๐Ÿ](https://t.me/cinemala_com1)**\n**๐™ฟ๐™พ๐š†๐™ด๐š๐™ด๐™ณ ๐™ฑ๐šˆ โ€บโ€บ [muั•รญc ะฒฯƒั‡](https://t.me/CcommusicBot)**\n@๐™ฒ๐™ธ๐™ฝ๐™ด๐™ผ๐™ฐ๐™ป๐™ฐ.๐™ฒ๐™พ๐™ผ**' - secmul, dur, dur_arr = 1, 0, duration.split(':') - for i in range(len(dur_arr)-1, -1, -1): - dur += (int(dur_arr[i]) * secmul) - secmul *= 60 - message.reply_audio(audio_file, caption=rep, parse_mode=enums.ParseMode.MARKDOWN,quote=False, title=title, duration=dur, performer=performer, thumb=thumb_name) - m.delete() - except Exception as e: - m.edit("**๐Ÿšซ ๐™ด๐š๐š๐™พ๐š ๐Ÿšซ**") - print(e) - - try: - os.remove(audio_file) - os.remove(thumb_name) - except Exception as e: - print(e) - -def get_text(message: Message) -> [None,str]: - text_to_return = message.text - if message.text is None: - return None - if " " not in text_to_return: - return None - try: - return message.text.split(None, 1)[1] - except IndexError: - return None - - -@Client.on_message(filters.command(["video", "mp4"])) -async def vsong(client, message: Message): - urlissed = get_text(message) - - pablo = await client.send_message( - message.chat.id, f"**๐™ต๐™ธ๐™ฝ๐™ณ๐™ธ๐™ฝ๐™ถ ๐šˆ๐™พ๐š„๐š ๐š…๐™ธ๐™ณ๐™ด๐™พ** `{urlissed}`" - ) - if not urlissed: - await pablo.edit("Invalid Command Syntax Please Check help Menu To Know More!") - return - - search = SearchVideos(f"{urlissed}", offset=1, mode="dict", max_results=1) - mi = search.result() - mio = mi["search_result"] - mo = mio[0]["link"] - thum = mio[0]["title"] - fridayz = mio[0]["id"] - mio[0]["channel"] - kekme = f"https://img.youtube.com/vi/{fridayz}/hqdefault.jpg" - await asyncio.sleep(0.6) - url = mo - sedlyf = wget.download(kekme) - opts = { - "format": "best", - "addmetadata": True, - "key": "FFmpegMetadata", - "prefer_ffmpeg": True, - "geo_bypass": True, - "nocheckcertificate": True, - "postprocessors": [{"key": "FFmpegVideoConvertor", "preferedformat": "mp4"}], - "outtmpl": "%(id)s.mp4", - "logtostderr": False, - "quiet": True, - } - try: - with YoutubeDL(opts) as ytdl: - ytdl_data = ytdl.extract_info(url, download=True) - except Exception as e: - await event.edit(event, f"**๐™ณ๐š˜๐š ๐š—๐š•๐š˜๐šŠ๐š ๐™ต๐šŠ๐š’๐š•๐šŽ๐š ๐™ฟ๐š•๐šŽ๐šŠ๐šœ๐šŽ ๐šƒ๐š›๐šข ๐™ฐ๐š๐šŠ๐š’๐š—..โ™ฅ๏ธ** \n**Error :** `{str(e)}`") - return - c_time = time.time() - file_stark = f"{ytdl_data['id']}.mp4" - capy = f""" -**๐šƒ๐™ธ๐šƒ๐™ป๐™ด :** [{thum}]({mo}) -**๐š๐™ด๐š€๐š„๐™ด๐š‚๐šƒ๐™ด๐™ณ ๐™ฑ๐šˆ :** {message.from_user.mention} -**@แด„แด„แดแด_แด›แด‡แด€แด** -""" - await client.send_video( - message.chat.id, - video=open(file_stark, "rb"), - duration=int(ytdl_data["duration"]), - file_name=str(ytdl_data["title"]), - thumb=sedlyf, - caption=capy, - supports_streaming=True, - reply_to_message_id=message.id - ) - await pablo.delete() - for files in (sedlyf, file_stark): - if files and os.path.exists(files): - os.remove(files) diff --git a/plugins/helpers/telegraph.py b/plugins/helpers/telegraph.py deleted file mode 100644 index a95a95b..0000000 --- a/plugins/helpers/telegraph.py +++ /dev/null @@ -1,46 +0,0 @@ -import os -import shutil -from pyrogram import Client, filters, enums -from telegraph import upload_file -from info import TMP_DOWNLOAD_DIRECTORY -from plugins.helper_functions.cust_p_filters import f_onw_fliter -from plugins.helper_functions.get_file_id import get_file_id - - -@Client.on_message( - filters.command("telegraph") & - f_onw_fliter -) -async def telegraph(client, message): - replied = message.reply_to_message - if not replied: - await message.reply_text("๐š๐™ด๐™ฟ๐™ป๐šˆ ๐šƒ๐™พ ๐™ฐ ๐™ฟ๐™ท๐™พ๐šƒ๐™พ ๐™พ๐š ๐š…๐™ธ๐™ณ๐™ด๐™พ ๐š„๐™ฝ๐™ณ๐™ด๐š ๐Ÿป๐™ผ๐™ฑ.") - return - file_info = get_file_id(replied) - if not file_info: - await message.reply_text("Not supported!") - return - _t = os.path.join( - TMP_DOWNLOAD_DIRECTORY, - str(replied.id) - ) - if not os.path.isdir(_t): - os.makedirs(_t) - _t += "/" - download_location = await replied.download( - _t - ) - try: - response = upload_file(download_location) - except Exception as document: - await message.reply_text(message, text=document) - else: - await message.reply( - f"Link :- https://telegra.ph{response[0]}", - disable_web_page_preview=True - ) - finally: - shutil.rmtree( - _t, - ignore_errors=True - ) diff --git a/plugins/helpers/tts.py b/plugins/helpers/tts.py deleted file mode 100644 index 76eeafe..0000000 --- a/plugins/helpers/tts.py +++ /dev/null @@ -1,38 +0,0 @@ -import traceback -from asyncio import get_running_loop -from io import BytesIO - -from googletrans import Translator -from gtts import gTTS -from pyrogram import Client, filters, enums -from pyrogram.types import Message - - -def convert(text): - audio = BytesIO() - i = Translator().translate(text, dest="en") - lang = i.src - tts = gTTS(text, lang=lang) - audio.name = lang + ".mp3" - tts.write_to_fp(audio) - return audio - - -@Client.on_message(filters.command("tts")) -async def text_to_speech(_, message: Message): - if not message.reply_to_message: - return await message.reply_text("Reply to some text ffs.") - if not message.reply_to_message.text: - return await message.reply_text("Reply to some text ffs.") - m = await message.reply_text("Processing") - text = message.reply_to_message.text - try: - loop = get_running_loop() - audio = await loop.run_in_executor(None, convert, text) - await message.reply_audio(audio) - await m.delete() - audio.close() - except Exception as e: - await m.edit(e) - e = traceback.format_exc() - print(e) diff --git a/plugins/inline.py b/plugins/inline.py deleted file mode 100644 index 7d344a6..0000000 --- a/plugins/inline.py +++ /dev/null @@ -1,109 +0,0 @@ -import logging -from pyrogram import Client, emoji, filters -from pyrogram.errors.exceptions.bad_request_400 import QueryIdInvalid -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, InlineQueryResultCachedDocument, InlineQuery -from database.ia_filterdb import get_search_results -from utils import is_subscribed, get_size, temp -from info import CACHE_TIME, AUTH_USERS, AUTH_CHANNEL, CUSTOM_FILE_CAPTION - -logger = logging.getLogger(__name__) -cache_time = 0 if AUTH_USERS or AUTH_CHANNEL else CACHE_TIME - -async def inline_users(query: InlineQuery): - if AUTH_USERS: - if query.from_user and query.from_user.id in AUTH_USERS: - return True - else: - return False - if query.from_user and query.from_user.id not in temp.BANNED_USERS: - return True - return False - -@Client.on_inline_query() -async def answer(bot, query): - """Show search results for given inline query""" - - if not await inline_users(query): - await query.answer(results=[], - cache_time=0, - switch_pm_text='okDa', - switch_pm_parameter="hehe") - return - - if AUTH_CHANNEL and not await is_subscribed(bot, query): - await query.answer(results=[], - cache_time=0, - switch_pm_text='You have to subscribe my channel to use the bot', - switch_pm_parameter="subscribe") - return - - results = [] - if '|' in query.query: - string, file_type = query.query.split('|', maxsplit=1) - string = string.strip() - file_type = file_type.strip().lower() - else: - string = query.query.strip() - file_type = None - - offset = int(query.offset or 0) - reply_markup = get_reply_markup(query=string) - files, next_offset, total = await get_search_results(string, - file_type=file_type, - max_results=10, - offset=offset) - - for file in files: - title=file.file_name - size=get_size(file.file_size) - f_caption=file.caption - if CUSTOM_FILE_CAPTION: - try: - f_caption=CUSTOM_FILE_CAPTION.format(file_name= '' if title is None else title, file_size='' if size is None else size, file_caption='' if f_caption is None else f_caption) - except Exception as e: - logger.exception(e) - f_caption=f_caption - if f_caption is None: - f_caption = f"{file.file_name}" - results.append( - InlineQueryResultCachedDocument( - title=file.file_name, - document_file_id=file.file_id, - caption=f_caption, - description=f'Size: {get_size(file.file_size)}\nType: {file.file_type}', - reply_markup=reply_markup)) - - if results: - switch_pm_text = f"{emoji.FILE_FOLDER} Results - {total}" - if string: - switch_pm_text += f" for {string}" - try: - await query.answer(results=results, - is_personal = True, - cache_time=cache_time, - switch_pm_text=switch_pm_text, - switch_pm_parameter="start", - next_offset=str(next_offset)) - except QueryIdInvalid: - pass - except Exception as e: - logging.exception(str(e)) - else: - switch_pm_text = f'{emoji.CROSS_MARK} No results' - if string: - switch_pm_text += f' for "{string}"' - - await query.answer(results=[], - is_personal = True, - cache_time=cache_time, - switch_pm_text=switch_pm_text, - switch_pm_parameter="okay") - - -def get_reply_markup(query): - buttons = [ - [ - InlineKeyboardButton('Search again', switch_inline_query_current_chat=query) - ] - ] - return InlineKeyboardMarkup(buttons) diff --git a/plugins/misc.py b/plugins/misc.py deleted file mode 100644 index 63cbfa9..0000000 --- a/plugins/misc.py +++ /dev/null @@ -1,211 +0,0 @@ -import os -from pyrogram import Client, filters, enums -from pyrogram.errors.exceptions.bad_request_400 import UserNotParticipant, MediaEmpty, PhotoInvalidDimensions, WebpageMediaEmpty -from info import IMDB_TEMPLATE -from utils import extract_user, get_file_id, get_poster, last_online -import time -from datetime import datetime -from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery -import logging -logger = logging.getLogger(__name__) -logger.setLevel(logging.ERROR) - -@Client.on_message(filters.command('id')) -async def showid(client, message): - chat_type = message.chat.type - if chat_type == enums.ChatType.PRIVATE: - user_id = message.chat.id - first = message.from_user.first_name - last = message.from_user.last_name or "" - username = message.from_user.username - dc_id = message.from_user.dc_id or "" - await message.reply_text( - f"โžฒ First Name: {first}\nโžฒ Last Name: {last}\nโžฒ Username: {username}\nโžฒ Telegram ID: {user_id}\nโžฒ Data Centre: {dc_id}", - quote=True - ) - - elif chat_type in [enums.ChatType.GROUP, enums.ChatType.SUPERGROUP]: - _id = "" - _id += ( - "โžฒ Chat ID: " - f"{message.chat.id}\n" - ) - if message.reply_to_message: - _id += ( - "โžฒ User ID: " - f"{message.from_user.id if message.from_user else 'Anonymous'}\n" - "โžฒ Replied User ID: " - f"{message.reply_to_message.from_user.id if message.reply_to_message.from_user else 'Anonymous'}\n" - ) - file_info = get_file_id(message.reply_to_message) - else: - _id += ( - "โžฒ User ID: " - f"{message.from_user.id if message.from_user else 'Anonymous'}\n" - ) - file_info = get_file_id(message) - if file_info: - _id += ( - f"{file_info.message_type}: " - f"{file_info.file_id}\n" - ) - await message.reply_text( - _id, - quote=True - ) - -@Client.on_message(filters.command(["info"])) -async def who_is(client, message): - # https://github.com/SpEcHiDe/PyroGramBot/blob/master/pyrobot/plugins/admemes/whois.py#L19 - status_message = await message.reply_text( - "`Fetching user info...`" - ) - await status_message.edit( - "`Processing user info...`" - ) - from_user = None - from_user_id, _ = extract_user(message) - try: - from_user = await client.get_users(from_user_id) - except Exception as error: - await status_message.edit(str(error)) - return - if from_user is None: - return await status_message.edit("no valid user_id / message specified") - message_out_str = "" - message_out_str += f"โžฒFirst Name: {from_user.first_name}\n" - last_name = from_user.last_name or "None" - message_out_str += f"โžฒLast Name: {last_name}\n" - message_out_str += f"โžฒTelegram ID: {from_user.id}\n" - username = from_user.username or "None" - dc_id = from_user.dc_id or "[User Doesn't Have A Valid DP]" - message_out_str += f"โžฒData Centre: {dc_id}\n" - message_out_str += f"โžฒUser Name: @{username}\n" - message_out_str += f"โžฒUser ๐–ซ๐—‚๐—‡๐—„: Click Here\n" - if message.chat.type in ((enums.ChatType.SUPERGROUP, enums.ChatType.CHANNEL)): - try: - chat_member_p = await message.chat.get_member(from_user.id) - joined_date = ( - chat_member_p.joined_date or datetime.now() - ).strftime("%Y.%m.%d %H:%M:%S") - message_out_str += ( - "โžฒJoined this Chat on: " - f"{joined_date}" - "\n" - ) - except UserNotParticipant: - pass - chat_photo = from_user.photo - if chat_photo: - local_user_photo = await client.download_media( - message=chat_photo.big_file_id - ) - buttons = [[ - InlineKeyboardButton('๐Ÿ” Close', callback_data='close_data') - ]] - reply_markup = InlineKeyboardMarkup(buttons) - await message.reply_photo( - photo=local_user_photo, - quote=True, - reply_markup=reply_markup, - caption=message_out_str, - parse_mode=enums.ParseMode.HTML, - disable_notification=True - ) - os.remove(local_user_photo) - else: - buttons = [[ - InlineKeyboardButton('๐Ÿ” Close', callback_data='close_data') - ]] - reply_markup = InlineKeyboardMarkup(buttons) - await message.reply_text( - text=message_out_str, - reply_markup=reply_markup, - quote=True, - parse_mode=enums.ParseMode.HTML, - disable_notification=True - ) - await status_message.delete() - -@Client.on_message(filters.command(["imdb", 'search'])) -async def imdb_search(client, message): - if ' ' in message.text: - k = await message.reply('Searching ImDB') - r, title = message.text.split(None, 1) - movies = await get_poster(title, bulk=True) - if not movies: - return await message.reply("No results Found") - btn = [ - [ - InlineKeyboardButton( - text=f"{movie.get('title')} - {movie.get('year')}", - callback_data=f"imdb#{movie.movieID}", - ) - ] - for movie in movies - ] - await k.edit('Here is what i found on IMDb', reply_markup=InlineKeyboardMarkup(btn)) - else: - await message.reply('Give me a movie / series Name') - -@Client.on_callback_query(filters.regex('^imdb')) -async def imdb_callback(bot: Client, quer_y: CallbackQuery): - i, movie = quer_y.data.split('#') - imdb = await get_poster(query=movie, id=True) - btn = [ - [ - InlineKeyboardButton( - text=f"{imdb.get('title')}", - url=imdb['url'], - ) - ] - ] - message = quer_y.message.reply_to_message or quer_y.message - if imdb: - caption = IMDB_TEMPLATE.format( - query = imdb['title'], - title = imdb['title'], - votes = imdb['votes'], - aka = imdb["aka"], - seasons = imdb["seasons"], - box_office = imdb['box_office'], - localized_title = imdb['localized_title'], - kind = imdb['kind'], - imdb_id = imdb["imdb_id"], - cast = imdb["cast"], - runtime = imdb["runtime"], - countries = imdb["countries"], - certificates = imdb["certificates"], - languages = imdb["languages"], - director = imdb["director"], - writer = imdb["writer"], - producer = imdb["producer"], - composer = imdb["composer"], - cinematographer = imdb["cinematographer"], - music_team = imdb["music_team"], - distributors = imdb["distributors"], - release_date = imdb['release_date'], - year = imdb['year'], - genres = imdb['genres'], - poster = imdb['poster'], - plot = imdb['plot'], - rating = imdb['rating'], - url = imdb['url'], - **locals() - ) - else: - caption = "No Results" - if imdb.get('poster'): - try: - await quer_y.message.reply_photo(photo=imdb['poster'], caption=caption, reply_markup=InlineKeyboardMarkup(btn)) - except (MediaEmpty, PhotoInvalidDimensions, WebpageMediaEmpty): - pic = imdb.get('poster') - poster = pic.replace('.jpg', "._V1_UX360.jpg") - await quer_y.message.reply_photo(photo=poster, caption=caption, reply_markup=InlineKeyboardMarkup(btn)) - except Exception as e: - logger.exception(e) - await quer_y.message.reply(caption, reply_markup=InlineKeyboardMarkup(btn), disable_web_page_preview=False) - await quer_y.message.delete() - else: - await quer_y.message.edit(caption, reply_markup=InlineKeyboardMarkup(btn), disable_web_page_preview=False) - await quer_y.answer() diff --git a/plugins/p_ttishow.py b/plugins/p_ttishow.py deleted file mode 100644 index 3e78aa6..0000000 --- a/plugins/p_ttishow.py +++ /dev/null @@ -1,287 +0,0 @@ -from pyrogram import Client, filters, enums -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup -from pyrogram.errors.exceptions.bad_request_400 import MessageTooLong, PeerIdInvalid -from info import ADMINS, LOG_CHANNEL, SUPPORT_CHAT, MELCOW_NEW_USERS, MELCOW_IMG, MELCOW_VID, MAIN_CHANNEL, S_GROUP -from database.users_chats_db import db -from database.ia_filterdb import Media -from utils import get_size, temp, get_settings -from Script import script -from pyrogram.errors import ChatAdminRequired -import asyncio - -"""-----------------------------------------https://t.me/GetTGLink/4179 --------------------------------------""" - -@Client.on_message(filters.new_chat_members & filters.group) -async def save_group(bot, message): - r_j_check = [u.id for u in message.new_chat_members] - if temp.ME in r_j_check: - if not await db.get_chat(message.chat.id): - total=await bot.get_chat_members_count(message.chat.id) - r_j = message.from_user.mention if message.from_user else "Anonymous" - await bot.send_message(LOG_CHANNEL, script.LOG_TEXT_G.format(message.chat.title, message.chat.id, total, r_j)) - await db.add_chat(message.chat.id, message.chat.title) - if message.chat.id in temp.BANNED_CHATS: - # Inspired from a boat of a banana tree - buttons = [[ - InlineKeyboardButton('Support', url=f'https://t.me/{SUPPORT_CHAT}') - ]] - reply_markup=InlineKeyboardMarkup(buttons) - k = await message.reply( - text='CHAT NOT ALLOWED ๐Ÿž\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..', - reply_markup=reply_markup, - ) - - try: - await k.pin() - except: - pass - await bot.leave_chat(message.chat.id) - return - buttons = [[ - InlineKeyboardButton('โ„น๏ธ Help', url=f"https://t.me/{temp.U_NAME}?start=help"), - InlineKeyboardButton('๐Ÿ“ข Updates', url=(MAIN_CHANNEL)) - ]] - reply_markup=InlineKeyboardMarkup(buttons) - await message.reply_text( - text=f"Thankyou For Adding Me In {message.chat.title} โฃ๏ธ\n\nIf you have any questions & doubts about using me contact support.", - reply_markup=reply_markup) - else: - settings = await get_settings(message.chat.id) - if settings["welcome"]: - for u in message.new_chat_members: - if (temp.MELCOW).get('welcome') is not None: - try: - await (temp.MELCOW['welcome']).delete() - except: - pass - temp.MELCOW['welcome'] = await message.reply_photo( - photo=(MELCOW_IMG), - caption=(script.MELCOW_ENG.format(u.mention, message.chat.title)), - reply_markup=InlineKeyboardMarkup( - [[ - InlineKeyboardButton('Sแดœแด˜แด˜แดส€แด› Gส€แดแดœแด˜', url=S_GROUP), - InlineKeyboardButton('Uแด˜แด…แด€แด›แด‡s Cสœแด€ษดษดแด‡สŸ', url=MAIN_CHANNEL) - ]] - ), - parse_mode=enums.ParseMode.HTML - ) - - if settings["auto_delete"]: - await asyncio.sleep(600) - await (temp.MELCOW['welcome']).delete() - -@Client.on_message(filters.command('leave') & filters.user(ADMINS)) -async def leave_a_chat(bot, message): - if len(message.command) == 1: - return await message.reply('Give me a chat id') - chat = message.command[1] - try: - chat = int(chat) - except: - chat = chat - try: - buttons = [[ - InlineKeyboardButton('Support', url=f'https://t.me/{SUPPORT_CHAT}') - ]] - reply_markup=InlineKeyboardMarkup(buttons) - await bot.send_message( - chat_id=chat, - text='Hello Friends, \nMy admin has told me to leave from group so i go! If you wanna add me again contact my support group.', - reply_markup=reply_markup, - ) - - await bot.leave_chat(chat) - await message.reply(f"left the chat `{chat}`") - except Exception as e: - await message.reply(f'Error - {e}') - -@Client.on_message(filters.command('disable') & filters.user(ADMINS)) -async def disable_chat(bot, message): - if len(message.command) == 1: - return await message.reply('Give me a chat id') - r = message.text.split(None) - if len(r) > 2: - reason = message.text.split(None, 2)[2] - chat = message.text.split(None, 2)[1] - else: - chat = message.command[1] - reason = "No reason Provided" - try: - chat_ = int(chat) - except: - return await message.reply('Give Me A Valid Chat ID') - cha_t = await db.get_chat(int(chat_)) - if not cha_t: - return await message.reply("Chat Not Found In DB") - if cha_t['is_disabled']: - return await message.reply(f"This chat is already disabled:\nReason- {cha_t['reason']} ") - await db.disable_chat(int(chat_), reason) - temp.BANNED_CHATS.append(int(chat_)) - await message.reply('Chat Successfully Disabled') - try: - buttons = [[ - InlineKeyboardButton('Support', url=f'https://t.me/{SUPPORT_CHAT}') - ]] - reply_markup=InlineKeyboardMarkup(buttons) - await bot.send_message( - chat_id=chat_, - text=f'Hello Friends, \nMy admin has told me to leave from group so i go! If you wanna add me again contact my support group. \nReason : {reason}', - reply_markup=reply_markup) - await bot.leave_chat(chat_) - except Exception as e: - await message.reply(f"Error - {e}") - - -@Client.on_message(filters.command('enable') & filters.user(ADMINS)) -async def re_enable_chat(bot, message): - if len(message.command) == 1: - return await message.reply('Give me a chat id') - chat = message.command[1] - try: - chat_ = int(chat) - except: - return await message.reply('Give Me A Valid Chat ID') - sts = await db.get_chat(int(chat)) - if not sts: - return await message.reply("Chat Not Found In DB !") - if not sts.get('is_disabled'): - return await message.reply('This chat is not yet disabled.') - await db.re_enable_chat(int(chat_)) - temp.BANNED_CHATS.remove(int(chat_)) - await message.reply("Chat Successfully re-enabled") - - -@Client.on_message(filters.command('stats') & filters.incoming) -async def get_ststs(bot, message): - rju = await message.reply('Fetching stats..') - total_users = await db.total_users_count() - totl_chats = await db.total_chat_count() - files = await Media.count_documents() - size = await db.get_db_size() - free = 536870912 - size - size = get_size(size) - free = get_size(free) - await rju.edit(script.STATUS_TXT.format(files, total_users, totl_chats, size, free)) - - -# a function for trespassing into others groups, Inspired by a Vazha -# Not to be used , But Just to showcase his vazhatharam. -# @Client.on_message(filters.command('invite') & filters.user(ADMINS)) -@Client.on_message(filters.command('invite') & filters.user(ADMINS)) -async def gen_invite(bot, message): - if len(message.command) == 1: - return await message.reply('Give me a chat id') - chat = message.command[1] - try: - chat = int(chat) - except: - return await message.reply('Give Me A Valid Chat ID') - try: - link = await bot.create_chat_invite_link(chat) - except ChatAdminRequired: - return await message.reply("Invite Link Generation Failed, Iam Not Having Sufficient Rights") - except Exception as e: - return await message.reply(f'Error {e}') - await message.reply(f'Here is your Invite Link {link.invite_link}') - -@Client.on_message(filters.command('ban') & filters.user(ADMINS)) -async def ban_a_user(bot, message): - # https://t.me/GetTGLink/4185 - if len(message.command) == 1: - return await message.reply('Give me a user id / username') - r = message.text.split(None) - if len(r) > 2: - reason = message.text.split(None, 2)[2] - chat = message.text.split(None, 2)[1] - else: - chat = message.command[1] - reason = "No reason Provided" - try: - chat = int(chat) - except: - pass - try: - k = await bot.get_users(chat) - except PeerIdInvalid: - return await message.reply("This is an invalid user, make sure ia have met him before.") - except IndexError: - return await message.reply("This might be a channel, make sure its a user.") - except Exception as e: - return await message.reply(f'Error - {e}') - else: - jar = await db.get_ban_status(k.id) - if jar['is_banned']: - return await message.reply(f"{k.mention} is already banned\nReason: {jar['ban_reason']}") - await db.ban_user(k.id, reason) - temp.BANNED_USERS.append(k.id) - await message.reply(f"Successfully banned {k.mention}") - - - -@Client.on_message(filters.command('unban') & filters.user(ADMINS)) -async def unban_a_user(bot, message): - if len(message.command) == 1: - return await message.reply('Give me a user id / username') - r = message.text.split(None) - if len(r) > 2: - reason = message.text.split(None, 2)[2] - chat = message.text.split(None, 2)[1] - else: - chat = message.command[1] - reason = "No reason Provided" - try: - chat = int(chat) - except: - pass - try: - k = await bot.get_users(chat) - except PeerIdInvalid: - return await message.reply("This is an invalid user, make sure ia have met him before.") - except IndexError: - return await message.reply("Thismight be a channel, make sure its a user.") - except Exception as e: - return await message.reply(f'Error - {e}') - else: - jar = await db.get_ban_status(k.id) - if not jar['is_banned']: - return await message.reply(f"{k.mention} is not yet banned.") - await db.remove_ban(k.id) - temp.BANNED_USERS.remove(k.id) - await message.reply(f"Successfully unbanned {k.mention}") - - - -@Client.on_message(filters.command('users') & filters.user(ADMINS)) -async def list_users(bot, message): - # https://t.me/GetTGLink/4184 - raju = await message.reply('Getting List Of Users') - users = await db.get_all_users() - out = "Users Saved In DB Are:\n\n" - async for user in users: - out += f"{user['name']}" - if user['ban_status']['is_banned']: - out += '( Banned User )' - out += '\n' - try: - await raju.edit_text(out) - except MessageTooLong: - with open('users.txt', 'w+') as outfile: - outfile.write(out) - await message.reply_document('users.txt', caption="List Of Users") - -@Client.on_message(filters.command('chats') & filters.user(ADMINS)) -async def list_chats(bot, message): - raju = await message.reply('Getting List Of chats') - chats = await db.get_all_chats() - out = "Chats Saved In DB Are:\n\n" - async for chat in chats: - out += f"**Title:** `{chat['title']}`\n**- ID:** `{chat['id']}`" - if chat['chat_status']['is_disabled']: - out += '( Disabled Chat )' - out += '\n' - try: - await raju.edit_text(out) - except MessageTooLong: - with open('chats.txt', 'w+') as outfile: - outfile.write(out) - await message.reply_document('chats.txt', caption="List Of Chats") diff --git a/plugins/pm_filter.py b/plugins/pm_filter.py index 6abf658..6291f08 100644 --- a/plugins/pm_filter.py +++ b/plugins/pm_filter.py @@ -113,10 +113,14 @@ async def pm_text(bot, message): user = message.from_user.first_name user_id = message.from_user.id if content.startswith("/") or content.startswith("#"): return # ignore commands and hashtags - await message.reply_text("Your message has been sent to my moderators !") + if user_id in ADMINS: return # ignore admins + await message.reply_text( + text=f"เด‡เดตเดฟเดŸเต† เดšเต‹เดฆเดฟเดšเตเดšเดพเตฝ เดธเดฟเดจเดฟเดฎ เด•เดฟเดŸเตเดŸเดฟเดฒเตเดฒ เด—เตเดฐเต‚เดชเตเดชเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดธเดฟเดจเดฟเดฎ เดšเต‹เดฆเดฟเด•เตเด•เตเด•..!!\n\nGROUP OR BOT ANY PROMBLEM OR BUGS CONTACT GROUP ADMIN = @ARAKAL_THERAVAD_MOVIES_02_bot!!!", + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("๐Ÿ“ ส€แด‡วซแดœแด‡sแด› สœแด‡ส€แด‡ ", url=f"https://t.me/ARAKAL_THERAVAD_MOVIES")]]) + ) await bot.send_message( chat_id=LOG_CHANNEL, - text=f"#PM_MSG\n\nName : {user}\n\nID : {user_id}\n\nMessage : {content}" + text=f"#๐๐Œ_๐Œ๐’๐†\n\nNแด€แดแด‡ : {user}\n\nID : {user_id}\n\nMแด‡ssแด€ษขแด‡ : {content}" ) @Client.on_callback_query(filters.regex(r"^next")) @@ -193,19 +197,8 @@ async def next_page(bot, query): ] for file in files ] - btn.insert(0, - [ - InlineKeyboardButton(f' โ™€๏ธ {search} โ™€๏ธ ', 'qinfo') - ] - ) - btn.insert(1, - [ - InlineKeyboardButton(f'ษชษด๊œฐแด', 'reqinfo'), - InlineKeyboardButton(f'แดแดแด ษชแด‡', 'minfo'), - InlineKeyboardButton(f'sแด‡ส€ษชแด‡s', 'sinfo'), - InlineKeyboardButton(f'แด›ษชแด˜s', 'tinfo') - ] - ) + + if 0 < offset <= 10: off_set = 0 @@ -263,7 +256,7 @@ async def advantage_spoll_choker(bot, query): reqstr = await bot.get_users(reqstr1) await bot.send_message(chat_id=LOG_CHANNEL, text=(script.NORSLTS.format(reqstr.id, reqstr.mention, movie))) k = await query.message.edit(script.MVE_NT_FND) - await asyncio.sleep(10) + await asyncio.sleep(400) await k.delete() @@ -515,7 +508,12 @@ async def cb_handler(client: Client, query: CallbackQuery): reply_markup=InlineKeyboardMarkup( [ [ - InlineKeyboardButton("๐Ÿ”ฅ แด„สœแด€ษดษดแด‡สŸ ๐Ÿ”ฅ", url=(MAIN_CHANNEL)) + InlineKeyboardButton(f'Eษดษข', 'feng'), + InlineKeyboardButton(f'Mแด€สŸ', 'fmal'), + InlineKeyboardButton(f'Tแด€แด', 'ftam'), + InlineKeyboardButton(f'Hษชษด', 'fhin') + ],[ + InlineKeyboardButton("๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ", url=(MAIN_CHANNEL)) ] ] ) @@ -548,7 +546,7 @@ async def cb_handler(client: Client, query: CallbackQuery): await query.answer(url=f"https://t.me/{temp.U_NAME}?start={ident}_{file_id}") elif query.data.startswith("checksub"): if AUTH_CHANNEL and not await is_subscribed(client, query): - await query.answer("๐‘ฐ ๐‘ณ๐’Š๐’Œ๐’† ๐’€๐’๐’–๐’“ ๐‘บ๐’Ž๐’‚๐’“๐’•๐’๐’†๐’”๐’”, ๐‘ฉ๐’–๐’• ๐‘ซ๐’๐’'๐’• ๐‘ฉ๐’† ๐‘ถ๐’—๐’†๐’“๐’”๐’Ž๐’‚๐’“๐’• ๐Ÿ˜’\n@๐’„๐’Š๐’๐’†๐’Ž๐’‚๐’๐’‚.๐’„๐’๐’Ž", show_alert=True) + await query.answer("๐‘ฐ ๐‘ณ๐’Š๐’Œ๐’† ๐’€๐’๐’–๐’“ ๐‘บ๐’Ž๐’‚๐’“๐’•๐’๐’†๐’”๐’”, ๐‘ฉ๐’–๐’• ๐‘ซ๐’๐’'๐’• ๐‘ฉ๐’† ๐‘ถ๐’—๐’†๐’“๐’”๐’Ž๐’‚๐’“๐’• ๐Ÿ˜’\n@ARAKAL_THERAVAD_MOVIES", show_alert=True) return ident, file_id = query.data.split("#") files_ = await get_file_details(file_id) @@ -624,6 +622,18 @@ async def cb_handler(client: Client, query: CallbackQuery): elif query.data == "tinfo": await query.answer("โ–ฃ แด›ษชแด˜s โ–ฃ\n\nโ˜… แด›สแด˜แด‡ แด„แดส€ส€แด‡แด„แด› sแด˜แด‡สŸสŸษชษดษข (ษขแดแดษขสŸแด‡)\n\nโ˜… ษชา“ สแดแดœ ษดแดแด› ษขแด‡แด› สแดแดœส€ า“ษชสŸแด‡ ษชษด แด›สœแด‡ ส™แดœแด›แด›แดษด แด›สœแด‡ษด แด›สœแด‡ ษดแด‡xแด› sแด›แด‡แด˜ ษชs แด„สŸษชแด„แด‹ ษดแด‡xแด› ส™แดœแด›แด›แดษด.\n\nโ˜… แด„แดษดแด›ษชษดแดœแด‡ แด›สœษชs แดแด‡แด›สœแดแด… แด›แด ษขแด‡แด›แด›ษชษดษข สแดแดœ า“ษชสŸแด‡\n\nโฃ แด˜แดแดกแด‡ส€แด‡แด… ส™ส แด„ษชษดแด‡แดแด€สŸแด€. แด„แดแด", show_alert=True) + elif query.data == "feng": + await query.answer("Dแดœแด‡ แด›แด แด„แดแด˜สส€ษชษขสœแด› แด›สœแด‡ า“ษชสŸแด‡ แดกษชสŸสŸ ส™แด‡ แด…แด‡สŸแด‡แด›แด‡แด… า“ส€แดแด สœแด‡ส€แด‡ ษชษด 10 แดษชษดแดœแด›แด‡s sแด แด…แดแดกษดสŸแดแด€แด… แด€า“แด›แด‡ส€ แดแดแด ษชษดษข า“ส€แดแด สœแด‡ส€แด‡ แด›แด sแดแดแด‡แดกสœแด‡ส€แด‡ แด‡สŸsแด‡!", show_alert=True) + + elif query.data == "fmal": + await query.answer("เด•เต‹เดชเตเดชเดฟเดฑเตˆเดฑเตเดฑเต เด‰เดณเตเดณเดคเตเด•เตŠเดฃเตเดŸเต เดซเดฏเตฝ 10 เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด‡เดตเดฟเดŸเต†เดจเดฟเดจเตเดจเตเด‚ เดกเดฟเดฒเต€เดฑเตเดฑเต เด†เด•เตเดจเตเดจเดคเดพเดฃเต เด…เดคเตเด•เตŠเดฃเตเดŸเต เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเตเด‚ เดฎเดฑเตเดฑเต†เดตเดฟเดŸเต†เด•เตเด•เต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดฏเดคเดฟเดจเต เดถเต‡เดทเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•!", show_alert=True) + + elif query.data == "ftam": + await query.answer("เฎชเฎคเฎฟเฎชเฏเฎชเฏเฎฐเฎฟเฎฎเฏˆ เฎ•เฎพเฎฐเฎฃเฎฎเฎพเฎ•, เฎ•เฏ‹เฎชเฏเฎชเฏ เฎ‡เฎ™เฏเฎ•เฎฟเฎฐเฏเฎจเฏเฎคเฏ 10 เฎจเฎฟเฎฎเฎฟเฎŸเฎ™เฏเฎ•เฎณเฎฟเฎฒเฏ เฎจเฏ€เฎ•เฏเฎ•เฎชเฏเฎชเฎŸเฏเฎฎเฏ, เฎŽเฎฉเฎตเฏ‡ เฎ‡เฎ™เฏเฎ•เฎฟเฎฐเฏเฎจเฏเฎคเฏ เฎตเฏ‡เฎฑเฏ เฎŽเฎ™เฏเฎ•เฎพเฎตเฎคเฏ เฎจเฎ•เฎฐเฏเฎคเฏเฎคเฎชเฏเฎชเฎŸเฏเฎŸ เฎชเฎฟเฎฑเฎ•เฏ เฎชเฎคเฎฟเฎตเฎฟเฎฑเฎ•เฏเฎ•เฎตเฏเฎฎเฏ!", show_alert=True) + + elif query.data == "fhin": + await query.answer("เค•เฅ‰เคชเฅ€เคฐเคพเค‡เคŸ เค•เฅ‡ เค•เคพเคฐเคฃ เคซเคผเคพเค‡เคฒ เคฏเคนเคพเค‚ เคธเฅ‡ 10 เคฎเคฟเคจเคŸ เคฎเฅ‡เค‚ เคกเคฟเคฒเฅ€เคŸ เคนเฅ‹ เคœเคพเคเค—เฅ€ เค‡เคธเคฒเคฟเค เคฏเคนเคพเค‚ เคธเฅ‡ เค•เคนเฅ€เค‚ เค”เคฐ เคฒเฅ‡ เคœเคพเค•เคฐ เคกเคพเค‰เคจเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚!", show_alert=True) + elif query.data == "surprise": btn = [[ InlineKeyboardButton('sแดœส€แด˜ส€ษชsแด‡', callback_data='start') @@ -642,15 +652,15 @@ async def cb_handler(client: Client, query: CallbackQuery): elif query.data == "start": buttons = [[ - InlineKeyboardButton('ร— แด€แด…แด… แดแด‡ แด›แด สแดแดœส€ ษขส€แดแดœแด˜s ร—', url=f'http://t.me/{temp.U_NAME}?startgroup=true') - ], [ - InlineKeyboardButton('๐Ÿ” sแด‡แด€ส€แด„สœ', switch_inline_query_current_chat=''), - InlineKeyboardButton('แดแดกษด ษชษดา“แด', url='https://t.me/+ipDgG7Qfrps1ZTJl') - ], [ - InlineKeyboardButton('สœแด‡สŸแด˜', callback_data='help'), - InlineKeyboardButton('แด€ส™แดแดœแด›', callback_data='about') - ],[ - InlineKeyboardButton('ส™แด€แด„แด‹ แด›แด sแด›แด€ส€แด›', callback_data='surprise') + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿญ", url=f"https://t.me/ARAKAL_THERAVAD_MOVIES"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฎ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_02") + ],[ + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฏ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_03"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฐ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_04") + ],[ + InlineKeyboardButton("๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ", url="https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") + ],[ + InlineKeyboardButton("โญ•๏ธ ๐—š๐—˜๐—ง ๐—ข๐—จ๐—ฅ ๐—–๐—›๐—”๐—ก๐—ก๐—˜๐—Ÿ ๐—Ÿ๐—œ๐—ก๐—ž๐—ฆ โญ•๏ธ", url="https://t.me/ARAKAL_THERAVAD_GROUP_LINKS") ]] reply_markup = InlineKeyboardMarkup(buttons) await client.edit_message_media( @@ -666,19 +676,15 @@ async def cb_handler(client: Client, query: CallbackQuery): await query.answer(MSG_ALRT) elif query.data == "help": buttons = [[ - InlineKeyboardButton('แดแด€ษดแดœแด€สŸ', callback_data='manuelfilter'), - InlineKeyboardButton('แด€แดœแด›แด', callback_data='autofilter'), - InlineKeyboardButton('แด„แดษดษดแด‡แด„แด›', callback_data='coct') - ], [ - InlineKeyboardButton('แด‡xแด›ส€แด€', callback_data='extra'), - InlineKeyboardButton('sแดษดษข', callback_data='song'), - InlineKeyboardButton('แด›แด›s', callback_data='tts') - ], [ - InlineKeyboardButton('แด ษชแด…แด‡แด', callback_data='video'), - InlineKeyboardButton('แด›ษขส€แด€แด˜สœ', callback_data='tele'), - InlineKeyboardButton('ษดแด‡xแด›', callback_data='aswin') - ], [ - InlineKeyboardButton('ส™แด€แด„แด‹', callback_data='start') + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿญ", url=f"https://t.me/ARAKAL_THERAVAD_MOVIES"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฎ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_02") + ],[ + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฏ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_03"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฐ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_04") + ],[ + InlineKeyboardButton("๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ", url="https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") + ],[ + InlineKeyboardButton("โญ•๏ธ ๐—š๐—˜๐—ง ๐—ข๐—จ๐—ฅ ๐—–๐—›๐—”๐—ก๐—ก๐—˜๐—Ÿ ๐—Ÿ๐—œ๐—ก๐—ž๐—ฆ โญ•๏ธ", url="https://t.me/ARAKAL_THERAVAD_GROUP_LINKS") ]] reply_markup = InlineKeyboardMarkup(buttons) await client.edit_message_media( @@ -702,19 +708,15 @@ async def cb_handler(client: Client, query: CallbackQuery): ) elif query.data == "aswin": buttons = [[ - InlineKeyboardButton('แด€แดœแด…ส™แดแดแด‹', callback_data='abook'), - InlineKeyboardButton('แด„แดแด ษชแด…', callback_data='corona'), - InlineKeyboardButton('ษขแด€แดแด‡s', callback_data='fun') - ], [ - InlineKeyboardButton('แด˜ษชษดษข', callback_data='pings'), - InlineKeyboardButton('แดŠsแดษดแด‡', callback_data='json'), - InlineKeyboardButton('sแด›ษชแด„แด‹ษชแด…', callback_data='sticker') - ], [ - InlineKeyboardButton('แดกสœแดษชs', callback_data='whois'), - InlineKeyboardButton('แดœส€สŸsสœแดส€แด›', callback_data='urlshort'), - InlineKeyboardButton('ษดแด‡xแด›', callback_data='aswins') - ], [ - InlineKeyboardButton('ส™แด€แด„แด‹', callback_data='help') + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿญ", url=f"https://t.me/ARAKAL_THERAVAD_MOVIES"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฎ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_02") + ],[ + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฏ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_03"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฐ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_04") + ],[ + InlineKeyboardButton("๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ", url="https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") + ],[ + InlineKeyboardButton("โญ•๏ธ ๐—š๐—˜๐—ง ๐—ข๐—จ๐—ฅ ๐—–๐—›๐—”๐—ก๐—ก๐—˜๐—Ÿ ๐—Ÿ๐—œ๐—ก๐—ž๐—ฆ โญ•๏ธ", url="https://t.me/ARAKAL_THERAVAD_GROUP_LINKS") ]] reply_markup = InlineKeyboardMarkup(buttons) await client.edit_message_media( @@ -738,15 +740,15 @@ async def cb_handler(client: Client, query: CallbackQuery): ) elif query.data == "aswins": buttons = [[ - InlineKeyboardButton('า“แดษดแด›', callback_data='font'), - InlineKeyboardButton('ษขแด›ส€แด€ษดs', callback_data='gtrans'), - InlineKeyboardButton('แด„แด€ส€ส™แดษด', callback_data='carb'), - ], [ - InlineKeyboardButton('แด„แดแดœษดแด›ส€ส', callback_data='country'), - InlineKeyboardButton('แด…แด‡แด˜สŸแดส', callback_data='deploy'), - InlineKeyboardButton('สœแดแดแด‡', callback_data='start') - ], [ - InlineKeyboardButton('ส™แด€แด„แด‹', callback_data='aswin') + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿญ", url=f"https://t.me/ARAKAL_THERAVAD_MOVIES"), + InlineKeyboardButton("๐Ÿ‘ฅ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฎ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_02") + ],[ + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฏ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_03"), + InlineKeyboardButton("๐Ÿ‘ฅ ๐—š๐—ฅ๐—ข๐—จ๐—ฃ - ๐Ÿฐ", url=f"https://t.me/ARAKAL_THERAVAD_GROUP_04") + ],[ + InlineKeyboardButton("๐Ÿ–ฅ ๐—ก๐—˜๐—ช ๐—ข๐—ง๐—ง ๐—จ๐—ฃ๐——๐—”๐—ง๐—˜๐—ฆ ๐Ÿ–ฅ", url="https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS") + ],[ + InlineKeyboardButton("โญ•๏ธ ๐—š๐—˜๐—ง ๐—ข๐—จ๐—ฅ ๐—–๐—›๐—”๐—ก๐—ก๐—˜๐—Ÿ ๐—Ÿ๐—œ๐—ก๐—ž๐—ฆ โญ•๏ธ", url="https://t.me/ARAKAL_THERAVAD_GROUP_LINKS") ]] reply_markup = InlineKeyboardMarkup(buttons) await client.edit_message_media( @@ -789,7 +791,7 @@ async def cb_handler(client: Client, query: CallbackQuery): ) elif query.data == "source": buttons = [[ - InlineKeyboardButton('ส€แด‡แด˜แด', url='https://github.com/Devil-Botz/Elsa'), + InlineKeyboardButton('ส€แด‡แด˜แด', url='https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS'), InlineKeyboardButton('ส™แด€แด„แด‹', callback_data='about') ]] reply_markup = InlineKeyboardMarkup(buttons) @@ -947,8 +949,8 @@ async def cb_handler(client: Client, query: CallbackQuery): ) elif query.data == "deploy": buttons = [[ - InlineKeyboardButton('ส€แด‡แด˜แด', url='https://github.com/Devil-Botz/Elsa'), - InlineKeyboardButton('แดแดกษดแด‡ส€', url='https://t.me/Aswin_pm_Bot') + InlineKeyboardButton('แดแด›แด›', url='https://t.me/OTT_ARAKAL_THERAVAD_MOVIESS'), + InlineKeyboardButton('แดแดกษดแด‡ส€', url='https://t.me/ARAKAL_THERAVAD_MOVIES_02_bot') ], [ InlineKeyboardButton('ส™แด€แด„แด‹', callback_data='aswin') ]] @@ -1240,19 +1242,7 @@ async def auto_filter(client, msg, spoll=False): ] for file in files ] - btn.insert(0, - [ - InlineKeyboardButton(f' โ™€๏ธ {search} โ™€๏ธ ', 'qinfo') - ] - ) - btn.insert(1, - [ - InlineKeyboardButton(f'ษชษด๊œฐแด', 'reqinfo'), - InlineKeyboardButton(f'แดแดแด ษชแด‡', 'minfo'), - InlineKeyboardButton(f'sแด‡ส€ษชแด‡s', 'sinfo'), - InlineKeyboardButton(f'แด›ษชแด˜s', 'tinfo') - ] - ) + if offset != "": key = f"{message.chat.id}-{message.id}" @@ -1301,7 +1291,7 @@ async def auto_filter(client, msg, spoll=False): **locals() ) else: - cap = f"๐™ƒ๐™š๐™ง๐™š ๐™ž๐™จ ๐™ฌ๐™๐™–๐™ฉ ๐™ž๐™จ ๐™›๐™ค๐™ช๐™ฃ๐™™ ๐™ฎ๐™ค๐™ช๐™ง ๐™ฆ๐™ช๐™š๐™ง๐™ฎ:\n {search}\n๐Ÿ‘ค๐™๐™š๐™ฆ๐™ช๐™š๐™จ๐™ฉ๐™š๐™™ ๐˜ฝ๐™ฎ : {message.from_user.mention}\n๐Ÿ‘ฅ๐™‚๐™ง๐™ค๐™ช๐™ฅ : {message.chat.title}" + cap = f" Hai ๐Ÿ‘‹ {message.from_user.mention} ๐Ÿ˜\n๐Ÿ“ ๐—™๐—ผ๐˜‚๐—ป๐—ฑ โœจ ๐—™๐—ถ๐—น๐—ฒ๐˜€ ๐—™๐—ผ๐—ฟ ๐—ฌ๐—ผ๐˜‚๐—ฟ ๐—ค๐˜‚๐—ฒ๐—ฟ๐˜† : #{search}๐Ÿ‘‡๐Ÿป" if imdb and imdb.get('poster'): try: if message.chat.id == SUPPORT_CHAT_ID: @@ -1320,7 +1310,7 @@ async def auto_filter(client, msg, spoll=False): if settings['auto_delete']: await asyncio.sleep(600) await hehe.delete() - await message.delete() + await message.delete() except (MediaEmpty, PhotoInvalidDimensions, WebpageMediaEmpty): if message.chat.id == SUPPORT_CHAT_ID: await message.reply_text(f"Hแด‡ส {message.from_user.mention}, {str(total_results)} ส€แด‡sแดœสŸแด›s แด€ส€แด‡ า“แดแดœษดแด… ษชษด แดส แด…แด€แด›แด€ส™แด€sแด‡ า“แดส€ สแดแดœส€ แดฬจแดœแด‡ส€ส {search}. Kษชษดแด…สŸส แดœsแด‡ ษชษดสŸษชษดแด‡ sแด‡แด€ส€แด„สœ แดส€ แดแด€แด‹แด‡ แด€ ษขส€แดแดœแด˜ แด€ษดแด… แด€แด…แด… แดแด‡ แด€s แด€แด…แดษชษด แด›แด ษขแด‡แด› แดแดแด ษชแด‡ า“ษชสŸแด‡s. Tสœษชs ษชs แด€ sแดœแด˜แด˜แดส€แด› ษขส€แดแดœแด˜ sแด แด›สœแด€แด› สแดแดœ แด„แด€ษด'แด› ษขแด‡แด› า“ษชสŸแด‡s า“ส€แดแด สœแด‡ส€แด‡...") @@ -1332,7 +1322,7 @@ async def auto_filter(client, msg, spoll=False): if settings['auto_delete']: await asyncio.sleep(600) await hmm.delete() - await message.delete() + await message.delete() except KeyError: grpid = await active_connection(str(message.from_user.id)) await save_group_settings(grpid, 'auto_delete', True) @@ -1340,7 +1330,7 @@ async def auto_filter(client, msg, spoll=False): if settings['auto_delete']: await asyncio.sleep(600) await hmm.delete() - await message.delete() + await message.delete() except Exception as e: if message.chat.id == SUPPORT_CHAT_ID: await message.reply_text(f"Hแด‡ส {message.from_user.mention}, {str(total_results)} ส€แด‡sแดœสŸแด›s แด€ส€แด‡ า“แดแดœษดแด… ษชษด แดส แด…แด€แด›แด€ส™แด€sแด‡ า“แดส€ สแดแดœส€ แดฬจแดœแด‡ส€ส {search}. Kษชษดแด…สŸส แดœsแด‡ ษชษดสŸษชษดแด‡ sแด‡แด€ส€แด„สœ แดส€ แดแด€แด‹แด‡ แด€ ษขส€แดแดœแด˜ แด€ษดแด… แด€แด…แด… แดแด‡ แด€s แด€แด…แดษชษด แด›แด ษขแด‡แด› แดแดแด ษชแด‡ า“ษชสŸแด‡s. Tสœษชs ษชs แด€ sแดœแด˜แด˜แดส€แด› ษขส€แดแดœแด˜ sแด แด›สœแด€แด› สแดแดœ แด„แด€ษด'แด› ษขแด‡แด› า“ษชสŸแด‡s า“ส€แดแด สœแด‡ส€แด‡...") @@ -1358,7 +1348,7 @@ async def auto_filter(client, msg, spoll=False): settings = await get_settings(message.chat.id) if settings['auto_delete']: await asyncio.sleep(600) - await fek.delete() + await fek.delete() await message.delete() else: if message.chat.id == SUPPORT_CHAT_ID: @@ -1368,7 +1358,7 @@ async def auto_filter(client, msg, spoll=False): try: if settings['auto_delete']: await asyncio.sleep(600) - await fuk.delete() + await fuk.delete() await message.delete() except KeyError: grpid = await active_connection(str(message.from_user.id)) @@ -1376,7 +1366,7 @@ async def auto_filter(client, msg, spoll=False): settings = await get_settings(message.chat.id) if settings['auto_delete']: await asyncio.sleep(600) - await fuk.delete() + await fuk.delete() await message.delete() if spoll: @@ -1400,7 +1390,7 @@ async def advantage_spell_chok(client, msg): logger.exception(e) await client.send_message(chat_id=LOG_CHANNEL, text=(script.NORSLTS.format(reqstr.id, reqstr.mention, mv_rqst))) k = await msg.reply(script.I_CUDNT.format(reqstr.mention)) - await asyncio.sleep(8) + await asyncio.sleep(600) await k.delete() return movielist = [] @@ -1415,7 +1405,7 @@ async def advantage_spell_chok(client, msg): caption=script.I_CUDNT.format(mv_rqst), reply_markup=InlineKeyboardMarkup(button) ) - await asyncio.sleep(30) + await asyncio.sleep(600) await k.delete() return movielist += [movie.get('title') for movie in movies] @@ -1471,12 +1461,14 @@ async def manual_filters(client, message, text=False): group_id, reply_text, disable_web_page_preview=True, - protect_content=True if settings["file_secure"] else False, + protect_content=True if settings["file_secure"] else True, reply_to_message_id=reply_id ) try: if settings['auto_ffilter']: await auto_filter(client, message) + await asyncio.sleep(600) + await elsa.delete() except KeyError: grpid = await active_connection(str(message.from_user.id)) await save_group_settings(grpid, 'auto_ffilter', True) @@ -1502,7 +1494,7 @@ async def manual_filters(client, message, text=False): reply_text, disable_web_page_preview=True, reply_markup=InlineKeyboardMarkup(button), - protect_content=True if settings["file_secure"] else False, + protect_content=True if settings["file_secure"] else True, reply_to_message_id=reply_id ) try: @@ -1531,7 +1523,7 @@ async def manual_filters(client, message, text=False): group_id, fileid, caption=reply_text or "", - protect_content=True if settings["file_secure"] else False, + protect_content=True if settings["file_secure"] else True, reply_to_message_id=reply_id ) try: @@ -1647,3 +1639,4 @@ async def global_filters(client, message, text=False): break else: return False + diff --git a/plugins/xtra_plugins/status.py b/plugins/xtra_plugins/status.py deleted file mode 100644 index 3c01df1..0000000 --- a/plugins/xtra_plugins/status.py +++ /dev/null @@ -1,95 +0,0 @@ -#Made By @Don_Sflix - -import os -import math -import time -import heroku3 -import requests - -from pyrogram import Client, filters, enums -from database.users_chats_db import db - -#===================================================== -BOT_START_TIME = time.time() - -HEROKU_API_KEY = (os.environ.get("HEROKU_API_KEY", "")) -#===================================================== - -@Client.on_message(filters.command('status')) -async def bot_status(client,message): - if HEROKU_API_KEY: - try: - server = heroku3.from_key(HEROKU_API_KEY) - - user_agent = ( - 'Mozilla/5.0 (Linux; Android 10; SM-G975F) ' - 'AppleWebKit/537.36 (KHTML, like Gecko) ' - 'Chrome/80.0.3987.149 Mobile Safari/537.36' - ) - accountid = server.account().id - headers = { - 'User-Agent': user_agent, - 'Authorization': f'Bearer {HEROKU_API_KEY}', - 'Accept': 'application/vnd.heroku+json; version=3.account-quotas', - } - - path = "/accounts/" + accountid + "/actions/get-quota" - - request = requests.get("https://api.heroku.com" + path, headers=headers) - - if request.status_code == 200: - result = request.json() - - total_quota = result['account_quota'] - quota_used = result['quota_used'] - - quota_left = total_quota - quota_used - - total = math.floor(total_quota/3600) - used = math.floor(quota_used/3600) - hours = math.floor(quota_left/3600) - minutes = math.floor(quota_left/60 % 60) - days = math.floor(hours/24) - - usedperc = math.floor(quota_used / total_quota * 100) - leftperc = math.floor(quota_left / total_quota * 100) - - quota_details = f""" -Heroku Account Status -โžช ๐–ธ๐—ˆ๐—Ž ๐—๐–บ๐—๐–พ {total} ๐—๐—ˆ๐—Ž๐—‹๐—Œ ๐—ˆ๐–ฟ ๐–ฟ๐—‹๐–พ๐–พ ๐–ฝ๐—’๐—‡๐—ˆ ๐—Š๐—Ž๐—ˆ๐—๐–บ ๐–บ๐—๐–บ๐—‚๐—…๐–บ๐–ป๐—…๐–พ ๐–พ๐–บ๐–ผ๐— ๐—†๐—ˆ๐—‡๐—๐—. -โžช ๐–ฃ๐—’๐—‡๐—ˆ ๐—๐—ˆ๐—Ž๐—‹๐—Œ ๐—Ž๐—Œ๐–พ๐–ฝ ๐—๐—๐—‚๐—Œ ๐—†๐—ˆ๐—‡๐—๐—: - โ€ข {used} ๐–ง๐—ˆ๐—Ž๐—‹๐—Œ ( {usedperc}% ) -โžช ๐–ฃ๐—’๐—‡๐—ˆ ๐—๐—ˆ๐—Ž๐—‹๐—Œ ๐—‹๐–พ๐—†๐–บ๐—‚๐—‡๐—‚๐—‡๐—€ ๐—๐—๐—‚๐—Œ ๐—†๐—ˆ๐—‡๐—๐—: - โ€ข {hours} ๐–ง๐—ˆ๐—Ž๐—‹๐—Œ ( {leftperc}% ) - โ€ข Approximately {days} days!""" - else: - quota_details = "" - except: - print("Check your Heroku API key") - quota_details = "" - else: - quota_details = "" - - uptime = time.strftime("%Hh %Mm %Ss", time.gmtime(time.time() - BOT_START_TIME)) - - try: - t, u, f = shutil.disk_usage(".") - total = humanbytes(t) - used = humanbytes(u) - free = humanbytes(f) - - disk = "\n**Disk Details**\n\n" \ - f"> USED : {used} / {total}\n" \ - f"> FREE : {free}\n\n" - except: - disk = "" - - await message.reply_text( - "๐—–๐˜‚๐—ฟ๐—ฟ๐—ฒ๐—ป๐˜ ๐˜€๐˜๐—ฎ๐˜๐˜‚๐˜€ ๐—ผ๐—ณ ๐˜†๐—ผ๐˜‚๐—ฟ ๐—•๐—ผ๐˜\n\n" - "DB Status\n" - f"โžช ๐–ก๐—ˆ๐— ๐–ด๐—‰๐—๐—‚๐—†๐–พ: {uptime}\n" - f"{quota_details}" - f"{disk}", - quote=True, - parse_mode=enums.ParseMode.MARKDOWN - ) diff --git a/requirements.txt b/requirements.txt index 8f7fe5f..bf434cf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,30 +8,12 @@ requests bs4 git+https://github.com/Joelkb/cinemagoer Heroku3 -search_engine_parser -wget -aiofiles -ffmpeg-python -ffmpeg -youtube_search -youtube_search_python -youtube-search-python==1.4.6 -yt-dlp -youtube-dl -youtube_search requests aiohttp==3.7.4 -gTTS -googletrans==3.1.0a0 -telegraph -PyPDF2 -ujson -pyshorteners -countryinfo datetime pytz -dnspython aiohttp python-math Pillow speedtest-cli +dnspython==2.3.0 diff --git a/sample_info.py b/sample_info.py index 731d8ee..a74c1b4 100644 --- a/sample_info.py +++ b/sample_info.py @@ -7,7 +7,7 @@ USERBOT_STRING_SESSION = '' # Bot settings -CACHE_TIME = 300 +CACHE_TIME = 600 USE_CAPTION_FILTER = False # Admins, Channels & Users diff --git a/start.sh b/start.sh index aa66f5a..f59669d 100644 --- a/start.sh +++ b/start.sh @@ -1,7 +1,7 @@ if [ -z $UPSTREAM_REPO ] then echo "Cloning main Repository" - git clone https://github.com/Devil-Botz/Elsa.git /Elsa + git clone https://github.com/soulpc/Elsa.git /Elsa else echo "Cloning Custom Repo from $UPSTREAM_REPO " git clone $UPSTREAM_REPO /Elsa