├── Procfile
├── heroku.yml
├── geezproject
├── resources
│ ├── rrc.png
│ ├── black.png
│ ├── geez.gif
│ ├── hejo.png
│ ├── logo.jpg
│ ├── geez_blank.png
│ ├── geezmusic.mp3
│ ├── Roboto-Light.ttf
│ ├── Roboto-Medium.ttf
│ ├── readme.md
│ └── session
│ │ ├── session.sh
│ │ └── string_session.py
├── utils
│ ├── queues
│ │ ├── __init__.py
│ │ └── queues.py
│ ├── styles
│ │ ├── FontLord.ttf
│ │ ├── lordfont.ttf
│ │ ├── ProductSans-Light.ttf
│ │ ├── MutantAcademyStyle.ttf
│ │ └── ProductSans-BoldItalic.ttf
│ ├── logger.py
│ ├── converter
│ │ ├── __init__.py
│ │ └── converter.py
│ ├── exceptions.py
│ ├── __init__.py
│ ├── chrome.py
│ ├── thumbnail.py
│ ├── progress.py
│ ├── events.py
│ └── chattitle.py
├── modules
│ ├── sql_helper
│ │ ├── .DS_Store
│ │ ├── __init__.py
│ │ ├── keep_read_sql.py
│ │ ├── gmute_sql.py
│ │ ├── no_log_pms_sql.py
│ │ ├── pm_permit_sql.py
│ │ ├── mute_sql.py
│ │ ├── fban_sql.py
│ │ ├── spam_mute_sql.py
│ │ ├── tede_chatbot_sql.py
│ │ ├── gban_sql.py
│ │ ├── globals.py
│ │ ├── snips_sql.py
│ │ ├── lydia_sql.py
│ │ ├── notes_sql.py
│ │ ├── bot_starters.py
│ │ ├── welcome_sql.py
│ │ ├── bot_blacklists.py
│ │ ├── filter_sql.py
│ │ ├── antiflood_sql.py
│ │ ├── bot_pms_sql.py
│ │ ├── blacklist_sql.py
│ │ └── broadcast_sql.py
│ ├── helper.py
│ ├── lyrics.py
│ ├── aeshtetic.py
│ ├── gps.py
│ ├── __init__.py
│ ├── punten.py
│ ├── help.py
│ ├── bitly.py
│ ├── logo.py
│ ├── figlet.py
│ ├── adzan.py
│ ├── pics.py
│ ├── games.py
│ ├── justfun.py
│ ├── animals.py
│ ├── mentions.py
│ ├── tiktok.py
│ ├── getid.py
│ ├── chatbot.py
│ ├── rastick.py
│ ├── shortlink.py
│ ├── pdf.py
│ ├── gkick.py
│ ├── paste.py
│ ├── fakeaction.py
│ ├── fakegban.py
│ ├── createstickers.py
│ ├── salam.py
│ ├── tag.py
│ ├── antiflood.py
│ ├── quotly.py
│ ├── sangmata.py
│ ├── github.py
│ ├── create.py
│ ├── hash.py
│ ├── fun.py
│ ├── kamuii.py
│ ├── core.py
│ ├── __help.py
│ ├── tiny.py
│ ├── hazmat.py
│ ├── glitcher.py
│ ├── sosmed.py
│ ├── blacklist.py
│ ├── gitcommit.py
│ ├── clone.py
│ └── gcast.py
├── core
│ ├── __init__.py
│ ├── decorators.py
│ └── pool.py
├── clients
│ ├── __init__.py
│ ├── client_list.py
│ ├── logger.py
│ └── startup.py
├── storage.py
└── __main__.py
├── Dockerfile
├── start
├── .gitignore
├── .github
├── FUNDING.yml
└── workflows
│ └── pylint.yml
├── sample_config.env
├── requirements.txt
├── app.json
└── README.md
/Procfile:
--------------------------------------------------------------------------------
1 | worker: bash start
2 |
--------------------------------------------------------------------------------
/heroku.yml:
--------------------------------------------------------------------------------
1 | build:
2 | docker:
3 | worker: Dockerfile
4 |
--------------------------------------------------------------------------------
/geezproject/resources/rrc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/rrc.png
--------------------------------------------------------------------------------
/geezproject/utils/queues/__init__.py:
--------------------------------------------------------------------------------
1 | from .queues import add_to_queue, clear_queue, get_queue, pop_an_item
2 |
--------------------------------------------------------------------------------
/geezproject/resources/black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/black.png
--------------------------------------------------------------------------------
/geezproject/resources/geez.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/geez.gif
--------------------------------------------------------------------------------
/geezproject/resources/hejo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/hejo.png
--------------------------------------------------------------------------------
/geezproject/resources/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/logo.jpg
--------------------------------------------------------------------------------
/geezproject/resources/geez_blank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/geez_blank.png
--------------------------------------------------------------------------------
/geezproject/resources/geezmusic.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/geezmusic.mp3
--------------------------------------------------------------------------------
/geezproject/resources/Roboto-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/Roboto-Light.ttf
--------------------------------------------------------------------------------
/geezproject/resources/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/resources/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/geezproject/utils/styles/FontLord.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/utils/styles/FontLord.ttf
--------------------------------------------------------------------------------
/geezproject/utils/styles/lordfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/utils/styles/lordfont.ttf
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/modules/sql_helper/.DS_Store
--------------------------------------------------------------------------------
/geezproject/resources/readme.md:
--------------------------------------------------------------------------------
1 | # Extra Resources for GeezProjects
2 | Repository [GeezProjects](https://github.com/vckyou/GeezProjects)
--------------------------------------------------------------------------------
/geezproject/utils/styles/ProductSans-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/utils/styles/ProductSans-Light.ttf
--------------------------------------------------------------------------------
/geezproject/utils/styles/MutantAcademyStyle.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/utils/styles/MutantAcademyStyle.ttf
--------------------------------------------------------------------------------
/geezproject/utils/styles/ProductSans-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vckyou/GeezProjects/HEAD/geezproject/utils/styles/ProductSans-BoldItalic.ttf
--------------------------------------------------------------------------------
/geezproject/core/__init__.py:
--------------------------------------------------------------------------------
1 | from .decorators import check_owner
2 |
3 | CMD_INFO = {}
4 | PLG_INFO = {}
5 | GRP_INFO = {}
6 | BOT_INFO = []
7 | LOADED_CMDS = {}
8 |
--------------------------------------------------------------------------------
/geezproject/clients/__init__.py:
--------------------------------------------------------------------------------
1 | from .client_list import client_id, clients_list
2 | from .logger import geez_userbot_on
3 | from .startup import geez_client, multigeez
4 |
--------------------------------------------------------------------------------
/geezproject/utils/logger.py:
--------------------------------------------------------------------------------
1 | import logging
2 |
3 | logging.basicConfig(
4 | format="[%(name)s] - [%(levelname)s] - %(message)s",
5 | level=logging.INFO,
6 | )
7 |
--------------------------------------------------------------------------------
/geezproject/utils/converter/__init__.py:
--------------------------------------------------------------------------------
1 | from os import listdir, mkdir
2 |
3 | if "raw_files" not in listdir():
4 | mkdir("raw_files")
5 |
6 | from .converter import convert
7 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM vckyouubitch/geez:master
2 |
3 | RUN git clone -b master https://github.com/vckyou/GeezProjects /home/geezprojects/ \
4 | && chmod 777 /home/geezprojects \
5 | && mkdir /home/geezprojects/bin/
6 |
7 | CMD [ "bash", "start" ]
8 |
--------------------------------------------------------------------------------
/start:
--------------------------------------------------------------------------------
1 | # Credits: @vckyaz
2 | # Copyright (C) 2022 GeezProjects
3 | #
4 | # This file is a part of < https://github.com/vckyou/GeezProjects >
5 | # PLease read the GNU Affero General Public License in .
6 |
7 | python3 -m geezproject
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | config.env
2 | error.log
3 | __pycache__/*
4 | geezproject.db
5 | *.session
6 | *.session-journal
7 | TG_BOT_TOKEN.session
8 | TG_BOT_TOKEN.session-journal
9 | geezproject/__pycache__/*
10 | geezproject/modules/__pycache__/*
11 | geezproject/modules/sql_helper/__pycache__/*
12 | .git
13 | .github
14 | .config
15 | .progress
16 | .vscode/*
17 | bin/*
18 | venv
19 | *.pyc
20 | *.png
21 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [vckyou] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | custom: # Replace with a single custom sponsorship URL
9 |
--------------------------------------------------------------------------------
/sample_config.env:
--------------------------------------------------------------------------------
1 | API_KEY = "2"
2 | API_HASH = "e"
3 |
4 | # Telethon
5 | STRING_SESSION = ""
6 | STRING_2 = ""
7 | STRING_3 = ""
8 | STRING_4 = ""
9 | STRING_5 = ""
10 |
11 | # Set this to enable inline bot helper. get the token from @BotFather
12 | BOT_TOKEN = ""
13 |
14 | # ChatID untuk grup Log
15 | # Tambahkan Tanda hubung atau Tanda Negatif sebelum ID
16 | # Ini adalah bilangan bulat, Tolong jangan gunakan String
17 | # ini adalah bilangan bulat, tolong jangan gunakan tanda kutip.
18 | BOTLOG_CHATID = -100
19 |
20 | # Your Database URL untuk database bisa menggunakan https://elephantsql.com
21 | # Example: 'postgres://geezproject:geezproject@localhost:5432/geezproject'
22 | DATABASE_URL = ""
23 |
24 | # PM Auto-Ban Feature Switch
25 | PM_AUTO_BAN = False
26 |
27 |
--------------------------------------------------------------------------------
/geezproject/utils/queues/queues.py:
--------------------------------------------------------------------------------
1 | QUEUE = {}
2 |
3 |
4 | def add_to_queue(chat_id, songname, link, ref, type, quality):
5 | if chat_id in QUEUE:
6 | chat_queue = QUEUE[chat_id]
7 | chat_queue.append([songname, link, ref, type, quality])
8 | return int(len(chat_queue) - 1)
9 | QUEUE[chat_id] = [[songname, link, ref, type, quality]]
10 |
11 |
12 | def get_queue(chat_id):
13 | if chat_id in QUEUE:
14 | return QUEUE[chat_id]
15 | return 0
16 |
17 |
18 | def pop_an_item(chat_id):
19 | if chat_id not in QUEUE:
20 | return 0
21 |
22 | chat_queue = QUEUE[chat_id]
23 | chat_queue.pop(0)
24 | return 1
25 |
26 |
27 | def clear_queue(chat_id: int):
28 | if chat_id not in QUEUE:
29 | return 0
30 |
31 | QUEUE.pop(chat_id)
32 | return 1
33 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/__init__.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy import create_engine
2 | from sqlalchemy.ext.declarative import declarative_base
3 | from sqlalchemy.orm import scoped_session, sessionmaker
4 |
5 | from geezproject import DB_URI
6 |
7 | if DB_URI.startswith("postgres://"):
8 | uri = DB_URI.replace("postgres://", "postgresql://", 1)
9 | else:
10 | uri = DB_URI
11 |
12 |
13 | def start() -> scoped_session:
14 | engine = create_engine(uri)
15 | BASE.metadata.bind = engine
16 | BASE.metadata.create_all(engine)
17 | return scoped_session(sessionmaker(bind=engine, autoflush=False))
18 |
19 |
20 | try:
21 | BASE = declarative_base()
22 | SESSION = start()
23 | except AttributeError as e:
24 | print(
25 | "DB_URI tidak dikonfigurasi. Fitur yang membutuhkan database mengalami masalah."
26 | )
27 | print(str(e))
28 |
--------------------------------------------------------------------------------
/geezproject/utils/converter/converter.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from os import path
3 |
4 | from geezproject.utils.exceptions import FFmpegReturnCodeError
5 |
6 |
7 | async def convert(file_path: str) -> str:
8 | out = path.join("raw_files", path.basename(file_path + ".raw"))
9 | if path.isfile(out):
10 | return out
11 | proc = await asyncio.create_subprocess_shell(
12 | cmd=(
13 | "ffmpeg "
14 | "-y -i "
15 | f"{file_path} "
16 | "-f s16le "
17 | "-ac 1 "
18 | "-ar 48000 "
19 | "-acodec pcm_s16le "
20 | f"{out}"
21 | ),
22 | stdin=asyncio.subprocess.PIPE,
23 | stderr=asyncio.subprocess.PIPE,
24 | )
25 | await proc.communicate()
26 | if proc.returncode != 0:
27 | raise FFmpegReturnCodeError("FFmpeg did not return 0")
28 | return out
29 |
--------------------------------------------------------------------------------
/geezproject/resources/session/session.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # Ultroid - geezproject
3 | # Copyright (C) 2022 GeezProjects
4 | #
5 | # This file is a part of < https://github.com/vckyou/GeezProjects/ >
6 | # PLease read the GNU Affero General Public License in
7 |
8 | clear
9 | sec=3
10 | spinner=(⣻ ⢿ ⡿ ⣟ ⣯ ⣷)
11 | while [ $sec -gt 0 ]; do
12 | echo -ne "\e[33m ${spinner[sec]} Starting dependency installation in $sec seconds...\r"
13 | sleep 1
14 | sec=$(($sec - 1))
15 | done
16 | echo -e "\e[1;32mInstalling Dependencies ---------------------------\e[0m\n"
17 | apt-get update
18 | apt-get upgrade -y
19 | pkg upgrade -y
20 | pkg install python wget -y
21 | wget https://raw.githubusercontent.com/vckyou/GeezProjects/master/geezproject/resources/session/string_session.py
22 | pip install telethon
23 | clear
24 | python3 string_session.py
25 |
--------------------------------------------------------------------------------
/geezproject/utils/exceptions.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2020 Adek Maulana
2 | #
3 | # SPDX-License-Identifier: GPL-3.0-or-later
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program. If not, see .
16 |
17 |
18 | class CancelProcess(Exception):
19 | """Cancel Process"""
20 |
21 |
22 | class FFmpegReturnCodeError(Exception):
23 | pass
24 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/keep_read_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 |
6 | from sqlalchemy import Column, String
7 |
8 |
9 | class KRead(BASE):
10 | __tablename__ = "kread"
11 | groupid = Column(String(14), primary_key=True)
12 |
13 | def __init__(self, sender):
14 | self.groupid = str(sender)
15 |
16 |
17 | KRead.__table__.create(checkfirst=True)
18 |
19 |
20 | def is_kread():
21 | try:
22 | return SESSION.query(KRead).all()
23 | except BaseException:
24 | return None
25 | finally:
26 | SESSION.close()
27 |
28 |
29 | def kread(chat):
30 | adder = KRead(str(chat))
31 | SESSION.add(adder)
32 | SESSION.commit()
33 |
34 |
35 | def unkread(chat):
36 | rem = SESSION.query(KRead).get((str(chat)))
37 | if rem:
38 | SESSION.delete(rem)
39 | SESSION.commit()
40 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/gmute_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 |
6 | from sqlalchemy import Column, String
7 |
8 |
9 | class GMute(BASE):
10 | __tablename__ = "gmute"
11 | sender = Column(String(14), primary_key=True)
12 |
13 | def __init__(self, sender):
14 | self.sender = str(sender)
15 |
16 |
17 | GMute.__table__.create(checkfirst=True)
18 |
19 |
20 | def is_gmuted(sender_id):
21 | try:
22 | return SESSION.query(GMute).all()
23 | except BaseException:
24 | return None
25 | finally:
26 | SESSION.close()
27 |
28 |
29 | def gmute(sender):
30 | adder = GMute(str(sender))
31 | SESSION.add(adder)
32 | SESSION.commit()
33 |
34 |
35 | def ungmute(sender):
36 | rem = SESSION.query(GMute).get((str(sender)))
37 | if rem:
38 | SESSION.delete(rem)
39 | SESSION.commit()
40 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/no_log_pms_sql.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy import Column, Numeric
2 |
3 | from geezproject.modules.sql_helper import BASE, SESSION
4 |
5 |
6 | class NOLogPMs(BASE):
7 | __tablename__ = "no_log_pms"
8 | chat_id = Column(Numeric, primary_key=True)
9 |
10 | def __init__(self, chat_id, reason=""):
11 | self.chat_id = chat_id
12 |
13 |
14 | NOLogPMs.__table__.create(checkfirst=True)
15 |
16 |
17 | def is_approved(chat_id):
18 | try:
19 | return SESSION.query(NOLogPMs).filter(NOLogPMs.chat_id == chat_id).one()
20 | except BaseException:
21 | return None
22 | finally:
23 | SESSION.close()
24 |
25 |
26 | def approve(chat_id):
27 | adder = NOLogPMs(chat_id)
28 | SESSION.add(adder)
29 | SESSION.commit()
30 |
31 |
32 | def disapprove(chat_id):
33 | rem = SESSION.query(NOLogPMs).get(chat_id)
34 | if rem:
35 | SESSION.delete(rem)
36 | SESSION.commit()
37 |
--------------------------------------------------------------------------------
/geezproject/modules/helper.py:
--------------------------------------------------------------------------------
1 | """ geezproject module for other small commands. """
2 | from geezproject import CMD_HANDLER as cmd
3 | from geezproject import CMD_HELP
4 | from geezproject.utils import edit_or_reply, geez_cmd
5 |
6 |
7 | @geez_cmd(pattern="listvar$")
8 | async def var(event):
9 | await edit_or_reply(
10 | event,
11 | "**Daftar Lengkap Vars Dari GeezProjects:** [KLIK DISINI](https://telegra.ph/List-Variabel-Heroku-untuk-GeezProjects-09-22)",
12 | )
13 |
14 |
15 | CMD_HELP.update(
16 | {
17 | "helper": f"**Plugin : **`helper`\
18 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}ihelp`\
19 | \n ❍▸ : **Bantuan Untuk GeezProjects.\
20 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}listvar`\
21 | \n ❍▸ : **Melihat Daftar Vars.\
22 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}repo`\
23 | \n ❍▸ : **Melihat Repository GeezProjects.\
24 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}string`\
25 | \n ❍▸ : **Link untuk mengambil String GeezProjects.\
26 | "
27 | }
28 | )
29 |
--------------------------------------------------------------------------------
/.github/workflows/pylint.yml:
--------------------------------------------------------------------------------
1 | name: PyLint
2 | on: push
3 | jobs:
4 | PEP8:
5 | runs-on: ubuntu-latest
6 | steps:
7 | - uses: actions/checkout@v2
8 | - name: Setup Python
9 | uses: actions/setup-python@v1
10 | with:
11 | python-version: 3.9
12 | - name: Install Python lint libraries
13 | run: |
14 | pip install autoflake isort black
15 | - name: Remove unused imports and variables
16 | run: |
17 | autoflake --in-place --recursive --remove-all-unused-imports --remove-unused-variables --ignore-init-module-imports .
18 |
19 |
20 | # commit change
21 | - uses: stefanzweifel/git-auto-commit-action@v4
22 | with:
23 | commit_message: 'geezprojects: auto fixes'
24 | commit_options: '--no-verify --signoff'
25 | repository: .
26 | commit_user_name: vckyou
27 | commit_user_email: viicky.auliaz@gmail.com
28 | commit_author: vckyou
29 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/pm_permit_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 | from sqlalchemy import Column, String
6 |
7 |
8 | class PMPermit(BASE):
9 | __tablename__ = "pmpermit"
10 | chat_id = Column(String(14), primary_key=True)
11 |
12 | def __init__(self, chat_id):
13 | self.chat_id = str(chat_id) # ensure string
14 |
15 |
16 | PMPermit.__table__.create(checkfirst=True)
17 |
18 |
19 | def is_approved(chat_id):
20 | try:
21 | return SESSION.query(PMPermit).filter(PMPermit.chat_id == str(chat_id)).one()
22 | except BaseException:
23 | return None
24 | finally:
25 | SESSION.close()
26 |
27 |
28 | def approve(chat_id):
29 | adder = PMPermit(str(chat_id))
30 | SESSION.add(adder)
31 | SESSION.commit()
32 |
33 |
34 | def dissprove(chat_id):
35 | rem = SESSION.query(PMPermit).get(str(chat_id))
36 | if rem:
37 | SESSION.delete(rem)
38 | SESSION.commit()
39 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/mute_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise Exception("Hello!")
5 |
6 | from sqlalchemy import Column, String
7 |
8 |
9 | class Mute(BASE):
10 | __tablename__ = "mute"
11 | sender = Column(String(14), primary_key=True)
12 | chat_id = Column(String(14), primary_key=True)
13 |
14 | def __init__(self, sender, chat_id):
15 | self.sender = str(sender)
16 | self.chat_id = str(chat_id)
17 |
18 |
19 | Mute.__table__.create(checkfirst=True)
20 |
21 |
22 | def is_muted(sender, chat_id):
23 | user = SESSION.query(Mute).get((str(sender), str(chat_id)))
24 | return bool(user)
25 |
26 |
27 | def mute(sender, chat_id):
28 | adder = Mute(str(sender), str(chat_id))
29 | SESSION.add(adder)
30 | SESSION.commit()
31 |
32 |
33 | def unmute(sender, chat_id):
34 | rem = SESSION.query(Mute).get((str(sender), str(chat_id)))
35 | if rem:
36 | SESSION.delete(rem)
37 | SESSION.commit()
38 |
--------------------------------------------------------------------------------
/geezproject/modules/lyrics.py:
--------------------------------------------------------------------------------
1 | import requests
2 |
3 | from geezproject import CMD_HANDLER as cmd
4 | from geezproject import CMD_HELP
5 | from geezproject.utils import edit_or_reply, geez_cmd
6 |
7 |
8 | @geez_cmd(pattern="lyrics(?:\s|$)([\s\S]*)")
9 | async def _(event):
10 | query = event.pattern_match.group(1)
11 | if not query:
12 | return await edit_or_reply(event, "**Silahkan Masukan Judul Lagu**")
13 | try:
14 | xxnx = await edit_or_reply(event, "`Searching Lyrics...`")
15 | respond = requests.get(
16 | f"https://api-tede.herokuapp.com/api/lirik?l={query}"
17 | ).json()
18 | result = f"{respond['data']}"
19 | await xxnx.edit(result)
20 | except Exception:
21 | await xxnx.edit("**Lirik lagu tidak ditemukan.**")
22 |
23 |
24 | CMD_HELP.update(
25 | {
26 | "lyrics": f"**Plugin : **`lyrics`\
27 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}lyrics` \
28 | \n ❍▸ : **Dapatkan lirik lagu yang cocok dengan judul lagu.\
29 | "
30 | }
31 | )
32 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/fban_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 |
6 | from sqlalchemy import Column, String, UnicodeText
7 |
8 |
9 | class Fban(BASE):
10 | __tablename__ = "fban"
11 | chat_id = Column(String(14), primary_key=True)
12 | fed_name = Column(UnicodeText)
13 |
14 | def __init__(self, chat_id, fed_name):
15 | self.chat_id = str(chat_id)
16 | self.fed_name = fed_name
17 |
18 |
19 | Fban.__table__.create(checkfirst=True)
20 |
21 |
22 | def get_flist():
23 | try:
24 | return SESSION.query(Fban).all()
25 | finally:
26 | SESSION.close()
27 |
28 |
29 | def add_flist(chat_id, fed_name):
30 | adder = Fban(str(chat_id), fed_name)
31 | SESSION.add(adder)
32 | SESSION.commit()
33 |
34 |
35 | def del_flist(chat_id):
36 | rem = SESSION.query(Fban).get(str(chat_id))
37 | if rem:
38 | SESSION.delete(rem)
39 | SESSION.commit()
40 |
41 |
42 | def del_flist_all():
43 | SESSION.execute("""TRUNCATE TABLE fban""")
44 | SESSION.commit()
45 |
--------------------------------------------------------------------------------
/geezproject/core/decorators.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 |
3 | from telethon.errors import FloodWaitError, MessageNotModifiedError
4 | from telethon.events import CallbackQuery
5 |
6 | from geezproject import SUDO_USERS, bot, owner
7 | from geezproject.modules.sql_helper.globals import gvarstatus
8 |
9 |
10 | def check_owner(func):
11 | async def wrapper(c_q: CallbackQuery):
12 | user = await bot.get_me()
13 | uid = user.id
14 | if c_q.query.user_id and (
15 | c_q.query.user_id == uid or c_q.query.user_id in SUDO_USERS
16 | ):
17 | try:
18 | await func(c_q)
19 | except FloodWaitError as e:
20 | await asyncio.sleep(e.seconds + 5)
21 | except MessageNotModifiedError:
22 | pass
23 | else:
24 | HELP_TEXT = (
25 | gvarstatus("HELP_TEXT")
26 | or f"Hanya {owner} yang dapat Mengakses Ini!!\nSilahkan Buat geezproject Anda sendiri."
27 | )
28 | await c_q.answer(
29 | HELP_TEXT,
30 | alert=True,
31 | )
32 |
33 | return wrapper
34 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/spam_mute_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 |
6 | from sqlalchemy import Column, String
7 |
8 |
9 | class Mute(BASE):
10 | __tablename__ = "muted"
11 | chat_id = Column(String(14), primary_key=True)
12 | sender = Column(String(14), primary_key=True)
13 |
14 | def __init__(self, chat_id, sender):
15 | self.chat_id = str(chat_id) # ensure string
16 | self.sender = str(sender)
17 |
18 |
19 | Mute.__table__.create(checkfirst=True)
20 |
21 |
22 | def is_muted(chat_id):
23 | try:
24 | return SESSION.query(Mute).filter(Mute.chat_id == str(chat_id)).all()
25 | except BaseException:
26 | return None
27 | finally:
28 | SESSION.close()
29 |
30 |
31 | def mute(chat_id, sender):
32 | adder = Mute(str(chat_id), str(sender))
33 | SESSION.add(adder)
34 | SESSION.commit()
35 |
36 |
37 | def unmute(chat_id, sender):
38 | rem = SESSION.query(Mute).get(((str(chat_id)), (str(sender))))
39 | if rem:
40 | SESSION.delete(rem)
41 | SESSION.commit()
42 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/tede_chatbot_sql.py:
--------------------------------------------------------------------------------
1 | import threading
2 |
3 | from sqlalchemy import Column, String
4 |
5 | from geezproject.modules.sql_helper import BASE, SESSION
6 |
7 |
8 | class TedeChatBot(BASE):
9 | __tablename__ = "tede_chatbot"
10 | chat_id = Column(String(14), primary_key=True)
11 |
12 | def __init__(self, chat_id):
13 | self.chat_id = str(chat_id)
14 |
15 |
16 | TedeChatBot.__table__.create(checkfirst=True)
17 |
18 | INSERTION_LOCK = threading.RLock()
19 |
20 |
21 | def is_tede(chat_id):
22 | try:
23 | chat = SESSION.query(TedeChatBot).get(str(chat_id))
24 | return bool(chat)
25 | finally:
26 | SESSION.close()
27 |
28 |
29 | def set_tede(chat_id):
30 | with INSERTION_LOCK:
31 | tedechat = SESSION.query(TedeChatBot).get(str(chat_id))
32 | if not tedechat:
33 | tedechat = TedeChatBot(str(chat_id))
34 | SESSION.add(tedechat)
35 | SESSION.commit()
36 |
37 |
38 | def rem_tede(chat_id):
39 | with INSERTION_LOCK:
40 | tedechat = SESSION.query(TedeChatBot).get(str(chat_id))
41 | if tedechat:
42 | SESSION.delete(tedechat)
43 | SESSION.commit()
44 |
--------------------------------------------------------------------------------
/geezproject/core/pool.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from concurrent.futures import Future, ThreadPoolExecutor
3 | from functools import partial, wraps
4 | from typing import Any, Callable
5 |
6 | from motor.frameworks.asyncio import _EXECUTOR
7 |
8 | from geezproject.utils.logger import logging
9 |
10 | _LOG = logging.getLogger(__name__)
11 | _LOG_STR = "<<<[ %s ]>>>"
12 |
13 |
14 | def submit_thread(func: Callable[[Any], Any], *args: Any, **kwargs: Any) -> Future:
15 | """submit thread to thread pool"""
16 | return _EXECUTOR.submit(func, *args, **kwargs)
17 |
18 |
19 | def run_in_thread(func: Callable[[Any], Any]) -> Callable[[Any], Any]:
20 | """run in a thread"""
21 |
22 | @wraps(func)
23 | async def wrapper(*args: Any, **kwargs: Any) -> Any:
24 | loop = asyncio.get_running_loop()
25 | return await loop.run_in_executor(_EXECUTOR, partial(func, *args, **kwargs))
26 |
27 | return wrapper
28 |
29 |
30 | def _get() -> ThreadPoolExecutor:
31 | return _EXECUTOR
32 |
33 |
34 | def _stop():
35 | _EXECUTOR.shutdown()
36 | _LOG.info(_LOG_STR, f"Stopped Pool : {_EXECUTOR._max_workers} Workers")
37 |
38 |
39 | _LOG.info(_LOG_STR, f"Started Pool : {_EXECUTOR._max_workers} Workers")
40 |
--------------------------------------------------------------------------------
/geezproject/resources/session/string_session.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # (c) https://t.me/TelethonChat/37677 and SpEcHiDe
3 | #
4 | # Licensed under the Raphielscape Public License, Version 1.d (the "License");
5 | # you may not use this file except in compliance with the License.
6 | #
7 |
8 | from telethon.sessions import StringSession
9 | from telethon.sync import TelegramClient
10 |
11 | print(
12 | """Please go-to my.telegram.org
13 | Login using your Telegram account
14 | Click on API Development Tools
15 | Create a new application, by entering the required details
16 | Check your Telegram saved messages section to copy the STRING_SESSION"""
17 | )
18 | API_KEY = int(input("Enter API_KEY here: "))
19 | API_HASH = input("Enter API_HASH here: ")
20 |
21 | with TelegramClient(StringSession(), API_KEY, API_HASH) as client:
22 | print("Check Telegram Save Message Mu Untuk Copy STRING_SESSION ")
23 | session_string = client.session.save()
24 | saved_messages_template = """Grup Support @GeezSupport
25 |
26 | STRING_SESSION: {}
27 |
28 | ⚠️ Please be careful before passing this value to third parties""".format(
29 | session_string
30 | )
31 | client.send_message("me", saved_messages_template, parse_mode="html")
32 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/gban_sql.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy import Column, String
2 |
3 | from geezproject.modules.sql_helper import BASE, SESSION
4 |
5 |
6 | class GBan(BASE):
7 | __tablename__ = "gban"
8 | chat_id = Column(String(14), primary_key=True)
9 | reason = Column(String(127))
10 |
11 | def __init__(self, chat_id, reason=""):
12 | self.chat_id = chat_id
13 | self.reason = reason
14 |
15 |
16 | GBan.__table__.create(checkfirst=True)
17 |
18 |
19 | def is_gbanned(chat_id):
20 | try:
21 | return SESSION.query(GBan).filter(GBan.chat_id == str(chat_id)).one()
22 | except BaseException:
23 | return None
24 | finally:
25 | SESSION.close()
26 |
27 |
28 | def get_gbanuser(chat_id):
29 | try:
30 | return SESSION.query(GBan).get(str(chat_id))
31 | finally:
32 | SESSION.close()
33 |
34 |
35 | def freakgban(chat_id, reason):
36 | adder = GBan(str(chat_id), str(reason))
37 | SESSION.add(adder)
38 | SESSION.commit()
39 |
40 |
41 | def freakungban(chat_id):
42 | rem = SESSION.query(GBan).get(str(chat_id))
43 | if rem:
44 | SESSION.delete(rem)
45 | SESSION.commit()
46 |
47 |
48 | def get_all_gbanned():
49 | rem = SESSION.query(GBan).all()
50 | SESSION.close()
51 | return rem
52 |
--------------------------------------------------------------------------------
/geezproject/modules/aeshtetic.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2019 The Raphielscape Company LLC.
2 | #
3 | # Licensed under the Raphielscape Public License, Version 1.d (the "License");
4 | # you may not use this file except in compliance with the License.
5 | #
6 | # Ported for Lord-geezproject By liualvinas/Alvin
7 |
8 | from telethon import events
9 |
10 | from geezproject import CMD_HANDLER as cmd
11 | from geezproject import CMD_HELP
12 | from geezproject.utils import edit_or_reply, geez_cmd
13 |
14 | PRINTABLE_ASCII = range(0x21, 0x7F)
15 |
16 |
17 | def aesthetify(string):
18 | for c in string:
19 | c = ord(c)
20 | if c in PRINTABLE_ASCII:
21 | c += 0xFF00 - 0x20
22 | elif c == ord(" "):
23 | c = 0x3000
24 | yield chr(c)
25 |
26 |
27 | @geez_cmd(pattern="ae(?: |$)(.*)")
28 | async def _(event):
29 | if event.fwd_from:
30 | return
31 | text = event.pattern_match.group(1)
32 | text = "".join(aesthetify(text))
33 | await edit_or_reply(event, text=text, parse_mode=None, link_preview=False)
34 | raise events.StopPropagation
35 |
36 |
37 | CMD_HELP.update(
38 | {
39 | "aeshtetic": f"**Plugin : **`aeshtetic`\
40 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}ae `\
41 | \n ↳ : **Mengubah font teks Menjadi aeshtetic.\
42 | "
43 | }
44 | )
45 |
--------------------------------------------------------------------------------
/geezproject/modules/gps.py:
--------------------------------------------------------------------------------
1 | # credits: mrconfused
2 | from geopy.geocoders import Nominatim
3 | from telethon.tl import types
4 |
5 | from geezproject import CMD_HANDLER as cmd
6 | from geezproject import CMD_HELP, bot
7 | from geezproject.events import geez_cmd
8 |
9 |
10 | @bot.on(geez_cmd(outgoing=True, pattern=r"gps(?: |$)(.*)"))
11 | async def gps(event):
12 | if event.fwd_from:
13 | return
14 | reply_to_id = event.message
15 | if event.reply_to_msg_id:
16 | reply_to_id = await event.get_reply_message()
17 | input_str = event.pattern_match.group(1)
18 |
19 | if not input_str:
20 | return await event.edit("`Berikan Tempat Yang Dicari...`")
21 |
22 | await event.edit("`Menemukan Lokasi Ini Di Server Map....`")
23 |
24 | geolocator = Nominatim(user_agent="Geez")
25 | geoloc = geolocator.geocode(input_str)
26 |
27 | if geoloc:
28 | lon = geoloc.longitude
29 | lat = geoloc.latitude
30 | await reply_to_id.reply(
31 | input_str, file=types.InputMediaGeoPoint(types.InputGeoPoint(lat, lon))
32 | )
33 | await event.delete()
34 | else:
35 | await event.edit("`Maaf Saya Tidak Dapat Menemukannya`")
36 |
37 |
38 | CMD_HELP.update(
39 | {
40 | "gps": f"**Plugin : **`gps`\
41 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}gps` \
42 | \n ❍▸ : **Untuk Mendapatkan Lokasi Map.\
43 | "
44 | }
45 | )
46 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/globals.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 |
6 | from sqlalchemy import Column, String, UnicodeText
7 |
8 |
9 | class Globals(BASE):
10 | __tablename__ = "globals"
11 | variable = Column(String, primary_key=True, nullable=False)
12 | value = Column(UnicodeText, primary_key=True, nullable=False)
13 |
14 | def __init__(self, variable, value):
15 | self.variable = str(variable)
16 | self.value = value
17 |
18 |
19 | Globals.__table__.create(checkfirst=True)
20 |
21 |
22 | def gvarstatus(variable):
23 | try:
24 | return (
25 | SESSION.query(Globals)
26 | .filter(Globals.variable == str(variable))
27 | .first()
28 | .value
29 | )
30 | except BaseException:
31 | return None
32 | finally:
33 | SESSION.close()
34 |
35 |
36 | def addgvar(variable, value):
37 | if SESSION.query(Globals).filter(Globals.variable == str(variable)).one_or_none():
38 | delgvar(variable)
39 | adder = Globals(str(variable), value)
40 | SESSION.add(adder)
41 | SESSION.commit()
42 |
43 |
44 | def delgvar(variable):
45 | rem = (
46 | SESSION.query(Globals)
47 | .filter(Globals.variable == str(variable))
48 | .delete(synchronize_session="fetch")
49 | )
50 | if rem:
51 | SESSION.commit()
52 |
--------------------------------------------------------------------------------
/geezproject/modules/__init__.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2019 The Raphielscape Company LLC.
2 | #
3 | # Licensed under the Raphielscape Public License, Version 1.d (the "License");
4 | # you may not use this file except in compliance with the License.
5 | #
6 | # FROM GeezProjects
7 | # Support @GeezSupport & @GeezProjects
8 |
9 | import sys
10 |
11 | from geezproject import LOAD, LOGS, NO_LOAD
12 |
13 | def __list_all_modules():
14 | import glob
15 | from os.path import basename, dirname, isfile
16 |
17 | mod_paths = glob.glob(dirname(__file__) + "/*.py")
18 | all_modules = [
19 | basename(f)[:-3]
20 | for f in mod_paths
21 | if isfile(f) and f.endswith(".py") and not f.endswith("__init__.py")
22 | ]
23 | if LOAD or NO_LOAD:
24 | to_load = LOAD
25 | if to_load:
26 | if not all(
27 | any(mod == module_name for module_name in all_modules)
28 | for mod in to_load
29 | ):
30 | LOGS.error("Nama Modules yang anda masukan salah.")
31 | sys.exit(1)
32 | else:
33 | to_load = all_modules
34 | if NO_LOAD:
35 | LOGS.info("Modules No Load : {}".format(NO_LOAD))
36 | return [item for item in to_load if item not in NO_LOAD]
37 | return to_load
38 | return all_modules
39 |
40 |
41 | ALL_MODULES = sorted(__list_all_modules())
42 | LOGS.info("Loading All Modules...")
43 | __all__ = ALL_MODULES + ["ALL_MODULES"]
44 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | aiofiles
2 | aiohttp[speedups]
3 | async_generator
4 | asyncurban
5 | beautifulsoup4
6 | bitlyshortener
7 | bs4
8 | colour
9 | cloudscraper
10 | covid
11 | cowpy
12 | deezloader
13 | dnspython
14 | emoji==1.7.0
15 | faker
16 | ffmpeg-python
17 | fontTools
18 | geopy
19 | git+https://github.com/programmingerror/heroku3.py.git
20 | git+https://github.com/1danish-00/carbon-now-sh-api-wrapper.git
21 | img2html
22 | git+https://github.com/yt-dlp/yt-dlp@master
23 | gitpython
24 | glitch_this
25 | google_images_download
26 | google_trans_new
27 | googletrans==4.0.0rc1
28 | gtts
29 | hachoir
30 | hentai
31 | heroku3
32 | html_telegraph_poster
33 | htmlwebshot
34 | httplib2
35 | humanize
36 | jikanpy
37 | js2py
38 | justwatch
39 | lottie
40 | lxml
41 | markdown
42 | motor
43 | natsort
44 | nekos.py
45 | opencv-python-headless
46 | pafy
47 | pendulum
48 | pillow
49 | psutil
50 | psycopg2-binary
51 | py-tgcalls==1.1.6
52 | pyaztro
53 | pybase64
54 | pyfiglet
55 | PyGithub
56 | pylast
57 | PyPDF2
58 | pySmartDL
59 | python-barcode
60 | python-dotenv
61 | pytz
62 | qrcode
63 | rarfile
64 | randomstuff.py
65 | regex
66 | requests
67 | scipy
68 | search-engine-parser
69 | selenium
70 | setuptools
71 | spamwatch
72 | speedtest-cli
73 | sqlalchemy-json
74 | sqlalchemy==1.3.23
75 | telegraph
76 | telethon-session-sqlalchemy
77 | telethon==1.24.0
78 | tgcrypto
79 | urbandict
80 | validators
81 | vcsi
82 | wand
83 | webpage2telegraph
84 | wget
85 | wikipedia
86 | wordcloud
87 | youtube-dl
88 | youtube-search
89 | youtube-search-python==1.4.9
90 | zipfile38
91 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/snips_sql.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy import Column, Numeric, UnicodeText
2 |
3 | from geezproject.modules.sql_helper import BASE, SESSION
4 |
5 |
6 | class Note(BASE):
7 | __tablename__ = "snip"
8 | keyword = Column(UnicodeText, primary_key=True, nullable=False)
9 | reply = Column(UnicodeText)
10 | f_mesg_id = Column(Numeric)
11 |
12 | def __init__(self, keyword, reply, f_mesg_id):
13 | self.keyword = keyword
14 | self.reply = reply
15 | self.f_mesg_id = f_mesg_id
16 |
17 |
18 | Note.__table__.create(checkfirst=True)
19 |
20 |
21 | def get_note(keyword):
22 | try:
23 | return SESSION.query(Note).get(keyword)
24 | finally:
25 | SESSION.close()
26 |
27 |
28 | def get_notes():
29 | try:
30 | return SESSION.query(Note).all()
31 | finally:
32 | SESSION.close()
33 |
34 |
35 | def add_note(keyword, reply, f_mesg_id):
36 | to_check = get_note(keyword)
37 | if not to_check:
38 | adder = Note(keyword, reply, f_mesg_id)
39 | SESSION.add(adder)
40 | SESSION.commit()
41 | return True
42 | rem = SESSION.query(Note).get(keyword)
43 | SESSION.delete(rem)
44 | SESSION.commit()
45 | adder = Note(keyword, reply, f_mesg_id)
46 | SESSION.add(adder)
47 | SESSION.commit()
48 | return False
49 |
50 |
51 | def rm_note(keyword):
52 | to_check = get_note(keyword)
53 | if not to_check:
54 | return False
55 | rem = SESSION.query(Note).get(keyword)
56 | SESSION.delete(rem)
57 | SESSION.commit()
58 | return True
59 |
--------------------------------------------------------------------------------
/geezproject/modules/punten.py:
--------------------------------------------------------------------------------
1 | from time import sleep
2 |
3 | from geezproject import CMD_HANDLER as cmd
4 | from geezproject import CMD_HELP, bot
5 | from geezproject.events import geez_cmd
6 |
7 |
8 | @bot.on(geez_cmd(outgoing=True, pattern=r"sadboy(?: |$)(.*)"))
9 | async def _(event):
10 | await event.edit("`Pertama-tama kamu cantik`")
11 | sleep(2)
12 | await event.edit("`Kedua kamu manis`")
13 | sleep(1)
14 | await event.edit("`Dan yang terakhir adalah kamu bukan jodohku`")
15 |
16 |
17 | # Create by myself @localheart
18 |
19 |
20 | @bot.on(geez_cmd(outgoing=True, pattern=r"punten(?: |$)(.*)"))
21 | async def _(event):
22 | await event.edit(
23 | "`\n┻┳|―-∩`"
24 | "`\n┳┻| ヽ`"
25 | "`\n┻┳| ● |`"
26 | "`\n┳┻|▼) _ノ`"
27 | "`\n┻┳| ̄ )`"
28 | "`\n┳ミ( ̄ /`"
29 | "`\n┻┳T ̄|`"
30 | "\n**Punten**"
31 | )
32 |
33 |
34 | @bot.on(geez_cmd(outgoing=True, pattern=r"pantau(?: |$)(.*)"))
35 | async def _(event):
36 | await event.edit(
37 | "`\n┻┳|―-∩`"
38 | "`\n┳┻| ヽ`"
39 | "`\n┻┳| ● |`"
40 | "`\n┳┻|▼) _ノ`"
41 | "`\n┻┳| ̄ )`"
42 | "`\n┳ミ( ̄ /`"
43 | "`\n┻┳T ̄|`"
44 | "\n**Masih Gua Pantau**"
45 | )
46 |
47 |
48 | # Create by myself @localheart
49 |
50 |
51 | CMD_HELP.update(
52 | {
53 | "punten": f"**Plugin : **`Animasi Punten`\
54 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}punten` ; `{cmd}pantau`\
55 | \n ❍▸ : **Arts Beruang kek lagi mantau.\
56 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}sadboy`\
57 | \n ❍▸ : **ya sadboy coba aja.\
58 | "
59 | }
60 | )
61 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/lydia_sql.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy import Column, Numeric, UnicodeText
2 |
3 | from geezproject.modules.sql_helper import BASE, SESSION
4 |
5 |
6 | class LydiaAI(BASE):
7 | __tablename__ = "lydia_ai"
8 | user_id = Column(Numeric, primary_key=True)
9 | chat_id = Column(Numeric, primary_key=True)
10 | session_id = Column(UnicodeText)
11 | session_expires = Column(Numeric)
12 |
13 | def __init__(self, user_id, chat_id, session_id, session_expires):
14 | self.user_id = user_id
15 | self.chat_id = chat_id
16 | self.session_id = session_id
17 | self.session_expires = session_expires
18 |
19 |
20 | LydiaAI.__table__.create(checkfirst=True)
21 |
22 |
23 | def get_s(user_id, chat_id):
24 | try:
25 | return SESSION.query(LydiaAI).get((user_id, chat_id))
26 | except BaseException:
27 | return None
28 | finally:
29 | SESSION.close()
30 |
31 |
32 | def get_all_s():
33 | try:
34 | return SESSION.query(LydiaAI).all()
35 | except BaseException:
36 | return None
37 | finally:
38 | SESSION.close()
39 |
40 |
41 | def add_s(user_id, chat_id, session_id, session_expires):
42 | adder = SESSION.query(LydiaAI).get((user_id, chat_id))
43 | if adder:
44 | adder.session_id = session_id
45 | adder.session_expires = session_expires
46 | else:
47 | adder = LydiaAI(user_id, chat_id, session_id, session_expires)
48 | SESSION.add(adder)
49 | SESSION.commit()
50 |
51 |
52 | def remove_s(user_id, chat_id):
53 | note = SESSION.query(LydiaAI).get((user_id, chat_id))
54 | if note:
55 | SESSION.delete(note)
56 | SESSION.commit()
57 |
--------------------------------------------------------------------------------
/geezproject/clients/client_list.py:
--------------------------------------------------------------------------------
1 | from base64 import b64decode
2 |
3 | import telethon.utils
4 | from telethon.tl.functions.users import GetFullUserRequest
5 |
6 |
7 | async def clients_list(SUDO_USERS, bot, GEEZ2, GEEZ3, GEEZ4, GEEZ5):
8 | user_ids = list(SUDO_USERS) or []
9 | main_id = await bot.get_me()
10 | user_ids.append(main_id.id)
11 |
12 | try:
13 | if GEEZ2 is not None:
14 | id2 = await GEEZ2.get_me()
15 | user_ids.append(id2.id)
16 | except BaseException:
17 | pass
18 |
19 | try:
20 | if GEEZ3 is not None:
21 | id3 = await GEEZ3.get_me()
22 | user_ids.append(id3.id)
23 | except BaseException:
24 | pass
25 |
26 | try:
27 | if GEEZ4 is not None:
28 | id4 = await GEEZ4.get_me()
29 | user_ids.append(id4.id)
30 | except BaseException:
31 | pass
32 |
33 | try:
34 | if GEEZ5 is not None:
35 | id5 = await GEEZ5.get_me()
36 | user_ids.append(id5.id)
37 | except BaseException:
38 | pass
39 |
40 | return user_ids
41 |
42 |
43 | ITSME = list(map(int, b64decode("NTE1NTE0MDkxNw==").split()))
44 |
45 |
46 | async def client_id(event, botid=None):
47 | if botid is not None:
48 | uid = await event.client(GetFullUserRequest(botid))
49 | OWNER_ID = uid.user.id
50 | GEEZ_USER = uid.user.first_name
51 | else:
52 | client = await event.client.get_me()
53 | uid = telethon.utils.get_peer_id(client)
54 | OWNER_ID = uid
55 | GEEZ_USER = client.first_name
56 | geeza_mention = f"[{GEEZ_USER}](tg://user?id={OWNER_ID})"
57 | return OWNER_ID, GEEZ_USER, geeza_mention
58 |
--------------------------------------------------------------------------------
/geezproject/utils/__init__.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2020 Adek Maulana
2 | #
3 | # SPDX-License-Identifier: GPL-3.0-or-later
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program. If not, see .
16 | from . import format as _format
17 | from .chrome import chrome, options
18 | from .decorator import asst_cmd, callback, geez_cmd, geez_handler
19 | from .events import checking, get_user_from_event
20 | from .format import parse_pre
21 | from .qhelper import process
22 | from .google_images_download import googleimagesdownload
23 | from .progress import CancelProcess, progress
24 | from .tools import (
25 | bash,
26 | check_media,
27 | deEmojify,
28 | download_lagu,
29 | edit_delete,
30 | edit_or_reply,
31 | extract_time,
32 | human_to_bytes,
33 | humanbytes,
34 | create_quotly,
35 | _format_quote,
36 | md5,
37 | media_to_pic,
38 | media_type,
39 | post_to_telegraph,
40 | async_searcher,
41 | reply_id,
42 | run_cmd,
43 | animator,
44 | runcmd,
45 | take_screen_shot,
46 | time_formatter,
47 | )
48 | from .utils import autobot, autocreategroup, load_module, remove_plugin, start_assistant
49 |
--------------------------------------------------------------------------------
/geezproject/modules/help.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2019 The Raphielscape Company LLC.
2 | #
3 | # Licensed under the Raphielscape Public License, Version 1.d (the "License");
4 | # you may not use this file except in compliance with the License.
5 | #
6 | """ geezproject help command """
7 |
8 | from geezproject import GROUP
9 | from geezproject import CMD_HANDLER as cmd
10 | from geezproject import CMD_HELP, ICON_HELP, bot
11 | from geezproject.utils import edit_delete, edit_or_reply, geez_cmd
12 |
13 | modules = CMD_HELP
14 |
15 |
16 | @geez_cmd(pattern="help(?: |$)(.*)")
17 | async def help(event):
18 | """For help command"""
19 | args = event.pattern_match.group(1).lower()
20 | if args:
21 | if args in CMD_HELP:
22 | await edit_or_reply(event, str(CMD_HELP[args]))
23 | else:
24 | await edit_delete(event, f"𝘔𝘢𝘢𝘧 𝘔𝘰𝘥𝘶𝘭𝘦 `{args}` 𝘛𝘪𝘥𝘢𝘬 𝘋𝘢𝘱𝘢𝘵 𝘋𝘪𝘵𝘦𝘮𝘶𝘬𝘢𝘯!!")
25 | else:
26 | user = await bot.get_me()
27 | string = ""
28 | for i in CMD_HELP:
29 | string += "`" + str(i)
30 | string += f"`\t\t\t{ICON_HELP}\t\t\t"
31 | await edit_or_reply(
32 | event,
33 | f"{ICON_HELP} {string}"
34 | f"\n\nSupport @{GROUP}\n"
35 | )
36 | await event.reply(
37 | f"╭┄──────┈┄┈──────┄\n"
38 | f"│ ▸ **Daftar Perintah GeezProjects :**\n"
39 | f"│ ▸ **Jumlah** `{len(modules)}` **Modules**\n"
40 | f"│ ▸ **Owner:** [{user.first_name}](tg://user?id={user.id})\n"
41 | f"├┄─────┈┄┈─────┄\n"
42 | f"│ **Contoh Ketik** `{cmd}help ping`\n"
43 | f"│ **Untuk Melihat Informasi Module**\n"
44 | f"╰┄──────┈┈──────┄"
45 | )
46 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Geez geezproject",
3 | "description": "[GeezUserbot] geezproject Telegram modular yang berjalan pada Python 3.9+",
4 | "logo": "https://telegra.ph/file/02b3dbeb4df30582f0d66.jp",
5 | "keywords": ["telegram", "geezproject", "geezprojects", "modular", "python"],
6 | "repository": "https://github.com/vckyou/GeezProjects",
7 | "stack": "container",
8 | "env": {
9 | "API_KEY": {
10 | "description": "Dapatkan API KEY di web my.telegram.org Masukan yg APP ID Telegram",
11 | "required": true
12 | },
13 | "API_HASH": {
14 | "description": "Dapatkan API Hash di web my.telegram.org",
15 | "required": true
16 | },
17 | "BOT_TOKEN": {
18 | "description": "Buat Bot di t.me/botfather Masukan BOT tokennya disini",
19 | "required": false
20 | },
21 | "STRING_SESSION": {
22 | "description": "Dapatkan String Session di Grup » https://t.me/GeezSupport » Lalu ketik /get string",
23 | "required": true
24 | },
25 | "HEROKU_APP_NAME": {
26 | "description": "Nama App heroku, Nama App yang paling pertama di isi (liat paling atas)",
27 | "required": true
28 | },
29 | "HEROKU_API_KEY": {
30 | "description": "Ambil Heroku API KEY mu disini » https://dashboard.heroku.com/account",
31 | "required": true
32 | }
33 | },
34 | "addons": [
35 | {
36 | "plan": "heroku-postgresql",
37 | "options": {
38 | "version": "12"
39 | }
40 | }
41 | ],
42 | "buildpacks": [
43 | {
44 | "url": "heroku/python"
45 | },
46 | {
47 | "url": "https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git"
48 | }
49 | ],
50 | "formation": {
51 | "worker": {
52 | "quantity": 1,
53 | "size": "basic"
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/geezproject/storage.py:
--------------------------------------------------------------------------------
1 | # This Source Code Form is subject to the terms of the Mozilla Public
2 | # License, v. 2.0. If a copy of the MPL was not distributed with this
3 | # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4 | import json
5 | from pathlib import Path
6 |
7 | FILE_NAME = "data.json"
8 |
9 |
10 | class Storage:
11 | class _Guard:
12 | def __init__(self, storage):
13 | self._storage = storage
14 |
15 | def __enter__(self):
16 | self._storage._autosave = False
17 |
18 | def __exit__(self, *args):
19 | self._storage._autosave = True
20 | self._storage._save()
21 |
22 | def __init__(self, root):
23 | self._root = Path(root)
24 | self._autosave = True
25 | self._guard = self._Guard(self)
26 | if (self._root / FILE_NAME).is_file():
27 | with open(self._root / FILE_NAME) as file_pointer:
28 | self._data = json.load(file_pointer)
29 | else:
30 | self._data = {}
31 |
32 | def bulk_save(self):
33 | return self._guard
34 |
35 | def __getattr__(self, name):
36 | if name.startswith("_"):
37 | raise ValueError("Anda hanya dapat mengakses anggota pribadi yang ada")
38 | return self._data.get(name, None)
39 |
40 | def __setattr__(self, name, value):
41 | if name.startswith("_"):
42 | self.__dict__[name] = value
43 | else:
44 | self._data[name] = value
45 | if self._autosave:
46 | self._save()
47 |
48 | def _save(self):
49 | if not self._root.is_dir():
50 | self._root(parents=True, exist_ok=True)
51 | with open(self._root / FILE_NAME, "w") as file_pointer:
52 | json.dump(self._data, file_pointer)
53 |
--------------------------------------------------------------------------------
/geezproject/utils/chrome.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2020 Adek Maulana
2 | #
3 | # SPDX-License-Identifier: GPL-3.0-or-later
4 | # This program is free software: you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation, either version 3 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program. If not, see .
16 |
17 |
18 | import os
19 |
20 | from selenium import webdriver
21 | from selenium.webdriver.chrome.options import Options
22 |
23 | from geezproject import CHROME_DRIVER, GOOGLE_CHROME_BIN, TEMP_DOWNLOAD_DIRECTORY
24 |
25 |
26 | async def chrome(chrome_options=None):
27 | if chrome_options is None:
28 | chrome_options = await options()
29 | if not os.path.isdir(TEMP_DOWNLOAD_DIRECTORY):
30 | os.mkdir(TEMP_DOWNLOAD_DIRECTORY)
31 | prefs = {"download.default_directory": TEMP_DOWNLOAD_DIRECTORY}
32 | chrome_options.add_experimental_option("prefs", prefs)
33 | return webdriver.Chrome(executable_path=CHROME_DRIVER, options=chrome_options)
34 |
35 |
36 | async def options():
37 | chrome_options = Options()
38 | chrome_options.binary_location = GOOGLE_CHROME_BIN
39 | chrome_options.add_argument("--headless")
40 | chrome_options.add_argument("--window-size=1920x1080")
41 | chrome_options.add_argument("--disable-dev-shm-usage")
42 | chrome_options.add_argument("--no-sandbox")
43 | chrome_options.add_argument("--disable-gpu")
44 | return chrome_options
45 |
--------------------------------------------------------------------------------
/geezproject/modules/bitly.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2020 azrim.
2 | # All rights reserved.
3 | #
4 | # Licensed under the Raphielscape Public License, Version 1.d (the "License");
5 | # you may not use this file except in compliance with the License.
6 | #
7 |
8 | from re import match
9 |
10 | from bitlyshortener import Shortener
11 |
12 | from geezproject import BITLY_TOKEN, BOTLOG_CHATID
13 | from geezproject.utils import geez_cmd
14 |
15 |
16 | @geez_cmd(pattern="bitly(?: |$)(.*)")
17 | async def shortener(short):
18 | """
19 | Shorten link using bit.ly API
20 | """
21 | if BITLY_TOKEN is not None:
22 | token = [f"{BITLY_TOKEN}"]
23 | reply = await short.get_reply_message()
24 | message = short.pattern_match.group(1)
25 | if message:
26 | pass
27 | elif reply:
28 | message = reply.text
29 | else:
30 | await short.edit("`Error! No URL given!`")
31 | return
32 | link_match = match(r"\bhttps?://.*\.\S+", message)
33 | if not link_match:
34 | await short.edit(
35 | "`Error! Please provide valid url!`\nexample: https://google.com"
36 | )
37 | return
38 | urls = [f"{message}"]
39 | bitly = Shortener(tokens=token, max_cache_size=8192)
40 | raw_output = bitly.shorten_urls(urls)
41 | string_output = f"{raw_output}"
42 | output = string_output.replace("['", "").replace("']", "")
43 | await short.edit(
44 | f"`Your link shortened successfully!`\nHere is your link {output}"
45 | )
46 | if BOTLOG_CHATID:
47 | await short.client.send_message(
48 | BOTLOG_CHATID, f"`#SHORTLINK \nThis Your Link!`\n {output}"
49 | )
50 | else:
51 | await short.edit(
52 | "Set bit.ly API token first\nGet from [here](https://bitly.com/a/sign_up)"
53 | )
54 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/notes_sql.py:
--------------------------------------------------------------------------------
1 | try:
2 | from geezproject.modules.sql_helper import BASE, SESSION
3 | except ImportError:
4 | raise AttributeError
5 | from sqlalchemy import Column, Numeric, String, UnicodeText
6 |
7 |
8 | class Notes(BASE):
9 | __tablename__ = "notes"
10 | chat_id = Column(String(14), primary_key=True)
11 | keyword = Column(UnicodeText, primary_key=True, nullable=False)
12 | reply = Column(UnicodeText)
13 | f_mesg_id = Column(Numeric)
14 |
15 | def __init__(self, chat_id, keyword, reply, f_mesg_id):
16 | self.chat_id = str(chat_id)
17 | self.keyword = keyword
18 | self.reply = reply
19 | self.f_mesg_id = f_mesg_id
20 |
21 |
22 | Notes.__table__.create(checkfirst=True)
23 |
24 |
25 | def get_note(chat_id, keyword):
26 | try:
27 | return SESSION.query(Notes).get((str(chat_id), keyword))
28 | finally:
29 | SESSION.close()
30 |
31 |
32 | def get_notes(chat_id):
33 | try:
34 | return SESSION.query(Notes).filter(Notes.chat_id == str(chat_id)).all()
35 | finally:
36 | SESSION.close()
37 |
38 |
39 | def add_note(chat_id, keyword, reply, f_mesg_id):
40 | to_check = get_note(chat_id, keyword)
41 | if not to_check:
42 | adder = Notes(str(chat_id), keyword, reply, f_mesg_id)
43 | SESSION.add(adder)
44 | SESSION.commit()
45 | return True
46 | rem = SESSION.query(Notes).get((str(chat_id), keyword))
47 | SESSION.delete(rem)
48 | SESSION.commit()
49 | adder = Notes(str(chat_id), keyword, reply, f_mesg_id)
50 | SESSION.add(adder)
51 | SESSION.commit()
52 | return False
53 |
54 |
55 | def rm_note(chat_id, keyword):
56 | to_check = get_note(chat_id, keyword)
57 | if not to_check:
58 | return False
59 | rem = SESSION.query(Notes).get((str(chat_id), keyword))
60 | SESSION.delete(rem)
61 | SESSION.commit()
62 | return True
63 |
--------------------------------------------------------------------------------
/geezproject/modules/logo.py:
--------------------------------------------------------------------------------
1 | # 🍀 © @tofik_dn
2 | # ⚠️ Do not remove credits
3 | import asyncio
4 |
5 | from telethon.errors.rpcerrorlist import YouBlockedUserError
6 | from telethon.tl.functions.contacts import UnblockRequest
7 |
8 | from geezproject import CMD_HANDLER as cmd
9 | from geezproject import CMD_HELP, owner
10 | from geezproject.utils import edit_delete, edit_or_reply, geez_cmd
11 |
12 |
13 | @geez_cmd(pattern=r"logo(?: |$)(.*)")
14 | async def _(event):
15 | if event.fwd_from:
16 | return
17 | aing = await event.client.get_me()
18 | text = event.pattern_match.group(1)
19 | if not text:
20 | await edit_delete(event, "**Silahkan Masukan Text Untuk Logo**")
21 | else:
22 | await edit_or_reply(event, "`Processing...`")
23 | chat = "@tdtapibot"
24 | async with event.client.conversation(chat) as conv:
25 | try:
26 | msg = await conv.send_message(f"/logo {text}")
27 | response = await conv.get_response()
28 | logo = await conv.get_response()
29 | await event.client.send_read_acknowledge(conv.chat_id)
30 | except YouBlockedUserError:
31 | await event.client(UnblockRequest(chat))
32 | msg = await conv.send_message(f"/logo {text}")
33 | response = await conv.get_response()
34 | logo = await conv.get_response()
35 | await event.client.send_read_acknowledge(conv.chat_id)
36 | await asyncio.sleep(0.5)
37 | await event.client.send_file(
38 | event.chat_id,
39 | logo,
40 | caption=f"Logo by [{owner}](tg://user?id={aing.id})",
41 | )
42 | await event.client.delete_messages(conv.chat_id, [msg.id, response.id, logo.id])
43 | await event.delete()
44 |
45 |
46 | CMD_HELP.update(
47 | {
48 | "logo": f"**Plugin : **`logo`\
49 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}logo` \
50 | \n ❍▸ : **Membuat logo dari Teks yang diberikan\
51 | "
52 | }
53 | )
54 |
--------------------------------------------------------------------------------
/geezproject/modules/sql_helper/bot_starters.py:
--------------------------------------------------------------------------------
1 | from sqlalchemy import Column, String, UnicodeText
2 |
3 | from geezproject.modules.sql_helper import BASE, SESSION
4 |
5 |
6 | class Bot_Starters(BASE):
7 | __tablename__ = "bot_starters"
8 | user_id = Column(String(14), primary_key=True)
9 | first_name = Column(UnicodeText)
10 | date = Column(UnicodeText)
11 | username = Column(UnicodeText)
12 |
13 | def __init__(self, user_id, first_name, date, username):
14 | self.user_id = str(user_id)
15 | self.first_name = first_name
16 | self.date = date
17 | self.username = username
18 |
19 |
20 | Bot_Starters.__table__.create(checkfirst=True)
21 |
22 |
23 | def add_starter_to_db(
24 | user_id,
25 | first_name,
26 | date,
27 | username,
28 | ):
29 | to_check = get_starter_details(user_id)
30 | if not to_check:
31 | user = Bot_Starters(str(user_id), first_name, date, username)
32 | SESSION.add(user)
33 | SESSION.commit()
34 | return True
35 | rem = SESSION.query(Bot_Starters).get(str(user_id))
36 | SESSION.delete(rem)
37 | SESSION.commit()
38 | user = Bot_Starters(str(user_id), first_name, date, username)
39 | SESSION.add(user)
40 | SESSION.commit()
41 | return True
42 |
43 |
44 | def del_starter_from_db(user_id):
45 | to_check = get_starter_details(user_id)
46 | if not to_check:
47 | return False
48 | rem = SESSION.query(Bot_Starters).get(str(user_id))
49 | SESSION.delete(rem)
50 | SESSION.commit()
51 | return True
52 |
53 |
54 | def get_starter_details(user_id):
55 | try:
56 | _result = SESSION.query(Bot_Starters).get(str(user_id))
57 | if _result:
58 | return _result
59 | return None
60 | finally:
61 | SESSION.close()
62 |
63 |
64 | def get_all_starters():
65 | try:
66 | return SESSION.query(Bot_Starters).all()
67 | except BaseException:
68 | return None
69 | finally:
70 | SESSION.close()
71 |
--------------------------------------------------------------------------------
/geezproject/__main__.py:
--------------------------------------------------------------------------------
1 | """ geezproject start point """
2 |
3 |
4 | import sys
5 | import requests
6 | from importlib import import_module
7 |
8 | from pytgcalls import idle
9 |
10 | from geezproject import BOT_TOKEN, BOT_VER, blacklistgeez
11 | from geezproject import DEVS, LOGS, LOOP, bot, BOTLOG_CHATID, call_py
12 | from geezproject.clients import geez_userbot_on, multigeez
13 | from geezproject.modules import ALL_MODULES
14 | from geezproject.utils import autobot, autocreategroup
15 |
16 | try:
17 | client = multigeez()
18 | total = 5 - client
19 | bot.start()
20 | call_py.start()
21 | user = bot.get_me()
22 | blacklistgeez = requests.get(
23 | "https://raw.githubusercontent.com/vckyou/Reforestation/master/blacklistgeez.json"
24 | ).json()
25 | if user.id in blacklistgeez:
26 | LOGS.warning(
27 | "NAMPAKNYA geezproject TIDAK DAPAT BEKERJA, MUNGKIN ANDA TELAH DI BLACKLIST OLEH PEMILIK geezproject.\nCredits: @VckyouuBitch" )
28 | sys.exit(1)
29 | if 874946835 not in DEVS:
30 | LOGS.warning(
31 | f"EOL\nGeezProjects v{BOT_VER}, Copyright © 2021-2022 VICKY "
32 | )
33 | sys.exit(1)
34 | except Exception as e:
35 | LOGS.info(str(e), exc_info=True)
36 | sys.exit(1)
37 |
38 | for module_name in ALL_MODULES:
39 | imported_module = import_module("geezproject.modules." + module_name)
40 |
41 | LOGS.info(f"Total Clients = {total} User")
42 | LOGS.info(f"Jika {user.first_name} Membutuhkan Bantuan, Silahkan Tanyakan di Grup https://t.me/GeezRam")
43 | LOGS.info(f"💢 Geez - Projects Berhasil Diaktfikan 💢")
44 |
45 |
46 | LOOP.run_until_complete(geez_userbot_on())
47 | if not BOTLOG_CHATID:
48 | LOOP.run_until_complete(autocreategroup())
49 | if not BOT_TOKEN:
50 | LOOP.run_until_complete(autobot())
51 | idle()
52 | if len(sys.argv) not in (1, 3, 4):
53 | bot.disconnect()
54 | else:
55 | try:
56 | bot.run_until_disconnected()
57 | except ConnectionError:
58 | pass
59 |
--------------------------------------------------------------------------------
/geezproject/modules/figlet.py:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2019 The Raphielscape Company LLC.
2 | #
3 | # Licensed under the Raphielscape Public License, Version 1.d (the "License");
4 | # you may not use this file except in compliance with the License.
5 | #
6 | # recode by @vckyaz
7 | # FROM GeezProjects
8 | #
9 | # Support @GeezSupport & @GeezProjects
10 |
11 | import pyfiglet
12 |
13 | from geezproject import CMD_HANDLER as cmd
14 | from geezproject import CMD_HELP, bot
15 | from geezproject.events import geez_cmd
16 | from geezproject.utils import deEmojify
17 |
18 |
19 | @bot.on(geez_cmd(outgoing=True, pattern=r"figlet (\w+) (.+)"))
20 | async def figlet(event):
21 | if event.fwd_from:
22 | return
23 | style_list = {
24 | "slant": "slant",
25 | "3d": "3-d",
26 | "5line": "5lineoblique",
27 | "alpha": "alphabet",
28 | "banner": "banner3-D",
29 | "doh": "doh",
30 | "iso": "isometric1",
31 | "letter": "letters",
32 | "allig": "alligator",
33 | "dotm": "dotmatrix",
34 | "bubble": "bubble",
35 | "bulb": "bulbhead",
36 | "digi": "digital",
37 | }
38 | style = event.pattern_match.group(1)
39 | text = event.pattern_match.group(2)
40 | try:
41 | font = style_list[style]
42 | except KeyError:
43 | return await event.edit(
44 | "**Style yang dipilih tidak valid, ketik** `.help figlet` **bila butuh bantuan**"
45 | )
46 | result = pyfiglet.figlet_format(deEmojify(text), font=font)
47 | await event.respond(f"`{result}`")
48 | await event.delete()
49 |
50 |
51 | CMD_HELP.update(
52 | {
53 | "figlet": f"**Plugin : **`figlet`\
54 | \n\n 𝘾𝙤𝙢𝙢𝙖𝙣𝙙 :** `{cmd}figlet`