-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 408054d
Showing
9 changed files
with
1,113 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
*$py.class | ||
|
||
# C extensions | ||
*.so | ||
|
||
# Distribution / packaging | ||
.Python | ||
build/ | ||
develop-eggs/ | ||
dist/ | ||
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
lib64/ | ||
parts/ | ||
sdist/ | ||
var/ | ||
wheels/ | ||
pip-wheel-metadata/ | ||
share/python-wheels/ | ||
*.egg-info/ | ||
.installed.cfg | ||
*.egg | ||
MANIFEST | ||
|
||
# PyInstaller | ||
# Usually these files are written by a python script from a template | ||
# before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
*.manifest | ||
*.spec | ||
|
||
# Installer logs | ||
pip-log.txt | ||
pip-delete-this-directory.txt | ||
|
||
# Unit test / coverage reports | ||
htmlcov/ | ||
.tox/ | ||
.nox/ | ||
.coverage | ||
.coverage.* | ||
.cache | ||
nosetests.xml | ||
coverage.xml | ||
*.cover | ||
*.py,cover | ||
.hypothesis/ | ||
.pytest_cache/ | ||
|
||
# Translations | ||
*.mo | ||
*.pot | ||
|
||
# Django stuff: | ||
*.log | ||
local_settings.py | ||
db.sqlite3 | ||
db.sqlite3-journal | ||
|
||
# Flask stuff: | ||
instance/ | ||
.webassets-cache | ||
|
||
# Scrapy stuff: | ||
.scrapy | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
|
||
# PyBuilder | ||
target/ | ||
|
||
# Jupyter Notebook | ||
.ipynb_checkpoints | ||
|
||
# IPython | ||
profile_default/ | ||
ipython_config.py | ||
|
||
# pyenv | ||
.python-version | ||
|
||
# pipenv | ||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. | ||
# However, in case of collaboration, if having platform-specific dependencies or dependencies | ||
# having no cross-platform support, pipenv may install dependencies that don't work, or not | ||
# install all needed dependencies. | ||
#Pipfile.lock | ||
|
||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow | ||
__pypackages__/ | ||
|
||
# Celery stuff | ||
celerybeat-schedule | ||
celerybeat.pid | ||
|
||
# SageMath parsed files | ||
*.sage.py | ||
|
||
# Environments | ||
.env | ||
.venv | ||
env/ | ||
venv/ | ||
ENV/ | ||
env.bak/ | ||
venv.bak/ | ||
|
||
# Spyder project settings | ||
.spyderproject | ||
.spyproject | ||
|
||
# Rope project settings | ||
.ropeproject | ||
|
||
# mkdocs documentation | ||
/site | ||
|
||
# mypy | ||
.mypy_cache/ | ||
.dmypy.json | ||
dmypy.json | ||
|
||
# Pyre type checker | ||
.pyre/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,234 @@ | ||
# A Powerful Music And Management Bot | ||
# Property Of Rocks Indian Largest Chatting Group | ||
# Rocks © @Dr_Asad_Ali © Rocks | ||
# Owner Asad Ali + Harshit Sharma + Abhimanyu Singh + Krishna Ki Diwani | ||
|
||
|
||
import os, logging, asyncio | ||
from telethon import Button | ||
from telethon import TelegramClient, events | ||
from telethon.tl.types import ChannelParticipantAdmin | ||
from telethon.tl.types import ChannelParticipantCreator | ||
from telethon.tl.types import ChannelParticipantsAdmins | ||
from telethon.tl.functions.channels import GetParticipantRequest | ||
from telethon.errors import UserNotParticipantError | ||
from pyrogram import Client, filters | ||
from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton | ||
|
||
|
||
logging.basicConfig( | ||
level=logging.INFO, format="%(name)s - [%(levelname)s] - %(message)s" | ||
) | ||
LOGGER = logging.getLogger(__name__) | ||
|
||
api_id = int(os.environ.get("APP_ID", "")) | ||
api_hash = os.environ.get("API_HASH", "") | ||
bot_token = os.environ.get("TOKEN", "") | ||
client = TelegramClient("client", api_id, api_hash).start(bot_token=bot_token) | ||
spam_chats = [] | ||
|
||
|
||
@client.on(events.NewMessage(pattern="^/start$")) | ||
async def start(event): | ||
chat_id = event.chat_id | ||
if not event.is_private: | ||
return await event.respond("ɪ ᴀᴍ ᴀʟɪᴠᴇ 🥺") | ||
await event.reply( | ||
"━━━━━━━━━━━━━━━━━━━━━━━━\n\n✪ ɪ ᴀᴍ ᴀʟᴇxᴀ ᴛᴏ ᴍᴇɴᴛɪᴏɴ ᴀʟʟ ᴛʜᴇ ɢʀᴏᴜᴘ ᴍᴇᴍʙᴇʀs ɪɴ ᴛᴇʟᴇɢʀᴀᴍ\n✪ ᴛʜᴀɴᴋs ғᴏʀ ᴜsɪɴɢ ʀᴜɴ /help..\n\n┏━━━━━━━━━━━━━━━━━┓\n┣★ ᴏᴡɴᴇʀ : [ᴀsᴀᴅ ᴀʟɪ](https://t.me/Dr_Asad_Ali)\n┣★ ᴜᴘᴅᴀᴛᴇs › : [ᴀʟᴇxᴀ ʜᴇʟᴘ](https://t.me/AsadSupport)┓\n┣★ ʀᴇᴘᴏ › : [ᴀʟᴇxᴀ ʀᴇᴘᴏ](https://github.com/TheTeamAlexa/MentionBot)\n┗━━━━━━━━━━━━━━━━━┛\n\n💞 ɪғ ʏᴏᴜ ʜᴀᴠᴇ ᴀɴʏ ǫᴜᴇsᴛɪᴏɴs ᴛʜᴇɴ\nᴅᴍ ᴛᴏ ᴍʏ [ᴏᴡɴᴇʀ](https://t.me/Jankari_Ki_Duniya) ...\n\n━━━━━━━━━━━━━━━━━━━━━━━━", | ||
link_preview=False, | ||
buttons=( | ||
[ | ||
Button.url( | ||
"☀︎︎️ ᴀᴅᴅ ᴍᴇ ᴛᴏ ʏᴏᴜʀ ɢʀᴏᴜᴘ ☀︎︎", | ||
"https://t.me/Alexa_MentionBot?startgroup=true", | ||
), | ||
], | ||
[ | ||
Button.url("☀︎︎ ɢʀᴏᴜᴘ ☀︎︎︎", "https://t.me/Shayri_Music_Lovers"), | ||
Button.url("☀︎︎ ᴄʜᴀɴɴᴇʟ ☀︎︎", "https://t.me/AsadSupport"), | ||
], | ||
[ | ||
Button.url("☀︎︎ ʙʀᴏ ☀︎︎️️", "https://t.me/HarshitSharma361"), | ||
Button.url("☀︎︎ ᴋɪɴɢ ☀︎︎︎", "https://t.me/Jankar_Ki_Duniya"), | ||
], | ||
), | ||
) | ||
|
||
|
||
@client.on(events.NewMessage(pattern="^/help$")) | ||
async def help(event): | ||
chat_id = event.chat_id | ||
if not event.is_private: | ||
return await event.respond("ᴅᴇᴀʀ sᴛᴀʀᴛ ᴍᴇ ɪɴ ᴘᴍ ᴛᴏ ᴜsᴇ ᴛʜɪs ᴄᴏᴍᴍᴀɴғ 🥺") | ||
helptext = "✪ ʜᴇʟᴘ ᴍᴇɴᴜ ᴏғ ᴀʟᴇxᴀ ᴍᴇɴᴛɪᴏɴ\n\n✪ ᴄᴏᴍᴍᴀɴᴅ: /mentionall\n✪ ᴄᴏᴍᴍᴀɴᴅ: /cancel ᴛᴏ ᴄᴀɴᴄᴇʟ ɢᴏɪɴɢ ᴏɴ ᴘʀᴏᴄᴇss.\n✪ ᴄᴏᴍᴍᴀɴᴅ /admin ᴛᴏ ᴍᴇɴᴛɪᴏɴ ᴀʟʟ ᴀᴅᴍɪɴ ʏᴏᴜʀ ɢʀᴏᴜᴘ\n✪ Yᴏᴜ ᴄᴀɴ ᴜsᴇ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴡɪᴛʜ ᴛᴇxᴛ ᴡʜᴀᴛ ʏᴏᴜ ᴡᴀɴᴛ ᴛᴏ ᴍᴇɴᴛɪᴏɴ ᴏᴛʜᴇʀs.\n✪ `Example: /mentionall Good Morning!`\n✪ Yᴏᴜ ᴄᴀɴ ʏᴏᴜ ᴛʜɪs ᴄᴏᴍᴍᴀɴᴅ ᴀs ᴀ ʀᴇᴘʟʏ ᴛᴏ ᴀɴʏ ᴍᴇssᴀɢᴇ. Bᴏᴛ ᴡɪʟʟ ᴛᴀɢ ᴜsᴇʀs ᴛᴏ ᴛʜᴀᴛ ʀᴇᴘʟɪᴇᴅ ᴍᴇsssᴀɢᴇ." | ||
await event.reply( | ||
helptext, | ||
link_preview=False, | ||
buttons=( | ||
[ | ||
Button.url("☀︎︎ ʜᴇᴀʀᴛ", "https://t.me/Give_Me_Heart"), | ||
Button.url("ʏᴏᴜᴛᴜʙᴇ ☀︎︎", "https://www.youtube.com/c/JankariKiDuniya"), | ||
] | ||
), | ||
) | ||
|
||
|
||
@client.on(events.NewMessage(pattern="^/owner$")) | ||
async def help(event): | ||
chat_id = event.chat_id | ||
if not event.is_private: | ||
return await event.respond("ᴅᴇᴀʀ sᴛᴀʀᴛ ᴍᴇ ɪɴ ᴘᴍ ᴛᴏ ᴜsᴇ ᴛʜɪs ᴄᴏᴍᴍᴀɴғ 🥺") | ||
helptext = "✪ ᴏᴡɴᴇʀ ᴍᴇɴᴜ ᴏғ ᴀʟᴇxᴀ ᴍᴇɴᴛɪᴏɴ\n\n✪ ᴍʏ ᴏᴡɴᴇʀ ɪs [ᴀsᴀᴅ ᴀʟɪ](https://t.me/Dr_Asad_Ali)\n✪ ᴏғғɪᴄɪᴀʟ ᴍᴇᴍʙᴇʀ ᴏғ ʀᴏᴄᴋs\n✪ ʏᴏᴜᴛᴜʙᴇ [ᴄʜᴀɴɴᴇʟ](https://www.youtube.com/c/JankariKiDuniya)\n✪ ғᴜᴛᴜʀᴇ ᴀɴᴇsᴛʜᴇᴛɪᴄ." | ||
await event.reply( | ||
helptext, | ||
link_preview=False, | ||
buttons=( | ||
[ | ||
Button.url("☀︎︎ ʜᴇᴀʀᴛ", "https://t.me/Give_Me_Heart"), | ||
Button.url("ʏᴏᴜᴛᴜʙᴇ ☀︎︎", "https://www.youtube.com/c/JankariKiDuniya"), | ||
] | ||
), | ||
) | ||
|
||
|
||
@client.on(events.NewMessage(pattern="^/mentionall ?(.*)")) | ||
async def mentionall(event): | ||
chat_id = event.chat_id | ||
if event.is_private: | ||
return await event.respond( | ||
"__This command can be use in groups and channels!__" | ||
) | ||
|
||
is_admin = False | ||
try: | ||
partici_ = await client(GetParticipantRequest(event.chat_id, event.sender_id)) | ||
except UserNotParticipantError: | ||
is_admin = False | ||
else: | ||
if isinstance( | ||
partici_.participant, (ChannelParticipantAdmin, ChannelParticipantCreator) | ||
): | ||
is_admin = True | ||
if not is_admin: | ||
return await event.respond("__Only admins can mention all!__") | ||
|
||
if event.pattern_match.group(1) and event.is_reply: | ||
return await event.respond("__Give me one argument!__") | ||
elif event.pattern_match.group(1): | ||
mode = "text_on_cmd" | ||
msg = event.pattern_match.group(1) | ||
elif event.is_reply: | ||
mode = "text_on_reply" | ||
msg = await event.get_reply_message() | ||
if msg == None: | ||
return await event.respond( | ||
"__I can't mention members for older messages! (messages which are sent before I'm added to group)__" | ||
) | ||
else: | ||
return await event.respond( | ||
"__Reply to a message or give me some text to mention others!__" | ||
) | ||
|
||
spam_chats.append(chat_id) | ||
usrnum = 0 | ||
usrtxt = "" | ||
async for usr in client.iter_participants(chat_id): | ||
if not chat_id in spam_chats: | ||
break | ||
usrnum += 1 | ||
usrtxt += f"[{usr.first_name}](tg://user?id={usr.id}) " | ||
if usrnum == 5: | ||
if mode == "text_on_cmd": | ||
txt = f"{usrtxt}\n\n{msg}" | ||
await client.send_message(chat_id, txt) | ||
elif mode == "text_on_reply": | ||
await msg.reply(usrtxt) | ||
await asyncio.sleep(2) | ||
usrnum = 0 | ||
usrtxt = "" | ||
try: | ||
spam_chats.remove(chat_id) | ||
except: | ||
pass | ||
|
||
|
||
@client.on(events.NewMessage(pattern="^/admins|/admin|@admin|@admins ?(.*)")) | ||
async def _(event): | ||
chat_id = event.chat_id | ||
if event.is_private: | ||
return await event.respond("sᴏʀʀʏ ʏᴏᴜ ᴄᴀɴ ᴍᴇɴᴛɪᴏɴ ᴀᴅᴍɪɴ ᴏɴʟʏ ɪɴ ɢʀᴏᴜᴘ") | ||
|
||
is_admin = False | ||
try: | ||
partici_ = await client(GetParticipantRequest(event.chat_id, event.sender_id)) | ||
except UserNotParticipantError: | ||
is_admin = False | ||
else: | ||
if isinstance( | ||
partici_.participant, (ChannelParticipantAdmin, ChannelParticipantCreator) | ||
): | ||
is_admin = True | ||
if not is_admin: | ||
return await event.respond("ᴏɴʟʏ ᴀᴅᴍɪɴ ᴄᴀɴ ᴍᴇɴᴛɪᴏɴ ɢʀᴏᴜᴘ ᴀᴅᴍɪɴs") | ||
|
||
if event.pattern_match.group(1) and event.is_reply: | ||
return await event.respond("ɢɪᴠᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴛᴏ ᴍᴇɴᴛɪᴏɴ") | ||
elif event.pattern_match.group(1): | ||
mode = "text_on_cmd" | ||
msg = event.pattern_match.group(1) | ||
elif event.is_reply: | ||
mode = "text_on_reply" | ||
msg = await event.get_reply_message() | ||
if msg == None: | ||
return await event.respond( | ||
"__ɪ ᴄᴀɴ'ᴛ ᴍᴇɴᴛɪᴏɴ ᴍᴇᴍʙᴇʀs ꜰᴏʀ ᴏʟᴅᴇʀ ᴍᴇssᴀɢᴇs! (ᴍᴇssᴀɢᴇs ᴡʜɪᴄʜ ᴀʀᴇ sᴇɴᴛ ʙᴇꜰᴏʀᴇ ɪ'ᴍ ᴀᴅᴅᴇᴅ ᴛᴏ ɢʀᴏᴜᴘ)__" | ||
) | ||
else: | ||
return await event.respond( | ||
"__ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ ᴏʀ ɢɪᴠᴇ ᴍᴇ sᴏᴍᴇ ᴛᴇxᴛ ᴛᴏ ᴍᴇɴᴛɪᴏɴ ᴏᴛʜᴇʀs!__" | ||
) | ||
|
||
spam_chats.append(chat_id) | ||
usrnum = 0 | ||
usrtxt = "" | ||
chat = await event.get_input_chat() | ||
async for x in client.iter_participants(chat, filter=ChannelParticipantsAdmins): | ||
if not chat_id in spam_chats: | ||
break | ||
usrnum += 1 | ||
usrtxt += f" \n [{x.first_name}](tg://user?id={x.id})" | ||
if usrnum == 5: | ||
if mode == "text_on_cmd": | ||
txt = f"{usrtxt}\n\n{msg}" | ||
await client.send_message(chat_id, txt) | ||
elif mode == "text_on_reply": | ||
await msg.reply(usrtxt) | ||
await asyncio.sleep(2) | ||
usrnum = 0 | ||
usrtxt = "" | ||
try: | ||
spam_chats.remove(chat_id) | ||
except: | ||
pass | ||
|
||
|
||
@client.on(events.NewMessage(pattern="^/cancel$")) | ||
async def cancel_spam(event): | ||
if not event.chat_id in spam_chats: | ||
return await event.respond("__There is no proccess on going...__") | ||
else: | ||
try: | ||
spam_chats.remove(event.chat_id) | ||
except: | ||
pass | ||
return await event.respond("__Stopped.__") | ||
|
||
|
||
print(">> ASAD ALEXA WORKING <<") | ||
client.run_until_disconnected() | ||
|
||
|
||
# A Powerful Music And Management Bot | ||
# Property Of Rocks Indian Largest Chatting Group | ||
# Rocks © @Dr_Asad_Ali © Rocks | ||
# Owner Asad Ali + Harshit Sharma + Abhimanyu Singh + Krishna Ki Diwani |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
* © @Dr_Asad_Ali | ||
* © @HarshitSharma361 | ||
* © @Itz_VeNom_xD |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
FROM python:3.10-slim-buster | ||
WORKDIR /app | ||
RUN apt-get -y update | ||
RUN apt-get -y install git gcc python3-dev | ||
COPY requirements.txt requirements.txt | ||
RUN pip3 install -r requirements.txt | ||
COPY . . | ||
CMD [ "python3", "Bot.py"] |
Oops, something went wrong.