1930600c40
This reverts commit 3c383db9a7.
134 lines
5.4 KiB
Python
134 lines
5.4 KiB
Python
# Moon-Userbot - telegram userbot
|
|
# Copyright (C) 2020-present Moon Userbot Organization
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
from pyrogram import Client, errors, filters
|
|
from pyrogram.types import Message
|
|
from utils.db import db
|
|
from utils.handlers import NoteSendHandler
|
|
from utils.misc import modules_help, prefix
|
|
|
|
|
|
@Client.on_message(filters.command(['save'], prefix) & filters.me)
|
|
async def save_note(client: Client, message: Message):
|
|
await message.edit('<b>Loading...</b>')
|
|
|
|
try:
|
|
chat = await client.get_chat(db.get('core.notes', 'chat_id', 0))
|
|
except (errors.RPCError, ValueError, KeyError):
|
|
# group is not accessible or isn't created
|
|
chat = await client.create_supergroup('Userbot_Notes_Filters', "Don't touch this group, please")
|
|
db.set('core.notes', 'chat_id', chat.id)
|
|
|
|
chat_id = chat.id
|
|
|
|
if message.reply_to_message and len(message.text.split()) >= 2:
|
|
note_name = message.text.split(maxsplit=1)[1]
|
|
if message.reply_to_message.media_group_id:
|
|
checking_note = db.get('core.notes', f'note{note_name}', False)
|
|
if not checking_note:
|
|
get_media_group = [
|
|
_.id for _ in await client.get_media_group(message.chat.id, message.reply_to_message.id)
|
|
]
|
|
try:
|
|
message_id = await client.forward_messages(chat_id, message.chat.id, get_media_group)
|
|
except errors.ChatForwardsRestricted:
|
|
await message.edit(
|
|
'<b>Forwarding messages is restricted by chat admins</b>',
|
|
)
|
|
return
|
|
note = {
|
|
'MESSAGE_ID': str(message_id[1].id),
|
|
'MEDIA_GROUP': True,
|
|
'CHAT_ID': str(chat_id),
|
|
}
|
|
db.set('core.notes', f'note{note_name}', note)
|
|
await message.edit(f'<b>Note {note_name} saved</b>')
|
|
else:
|
|
await message.edit('<b>This note already exists</b>')
|
|
else:
|
|
checking_note = db.get('core.notes', f'note{note_name}', False)
|
|
if not checking_note:
|
|
try:
|
|
message_id = await message.reply_to_message.forward(chat_id)
|
|
except errors.ChatForwardsRestricted:
|
|
message_id = await message.copy(chat_id)
|
|
note = {
|
|
'MEDIA_GROUP': False,
|
|
'MESSAGE_ID': str(message_id.id),
|
|
'CHAT_ID': str(chat_id),
|
|
}
|
|
db.set('core.notes', f'note{note_name}', note)
|
|
await message.edit(f'<b>Note {note_name} saved</b>')
|
|
else:
|
|
await message.edit('<b>This note already exists</b>')
|
|
elif len(message.text.split()) >= 3:
|
|
note_name = message.text.split(maxsplit=1)[1].split()[0]
|
|
checking_note = db.get('core.notes', f'note{note_name}', False)
|
|
if not checking_note:
|
|
message_id = await client.send_message(chat_id, message.text.split(note_name)[1].strip())
|
|
note = {
|
|
'MEDIA_GROUP': False,
|
|
'MESSAGE_ID': str(message_id.id),
|
|
'CHAT_ID': str(chat_id),
|
|
}
|
|
db.set('core.notes', f'note{note_name}', note)
|
|
await message.edit(f'<b>Note {note_name} saved</b>')
|
|
else:
|
|
await message.edit('<b>This note already exists</b>')
|
|
else:
|
|
await message.edit(
|
|
f'<b>Example: <code>{prefix}save note_name</code></b>',
|
|
)
|
|
|
|
|
|
@Client.on_message(filters.command('note', prefix) & filters.me)
|
|
async def note_send(client: Client, message: Message):
|
|
handler = NoteSendHandler(client, message)
|
|
await handler.handle_note_send()
|
|
|
|
|
|
@Client.on_message(filters.command(['notes'], prefix) & filters.me)
|
|
async def notes(_, message: Message):
|
|
await message.edit('<b>Loading...</b>')
|
|
text = 'Available notes:\n\n'
|
|
collection = db.get_collection('core.notes')
|
|
for note in collection:
|
|
if note[:4] == 'note':
|
|
text += f'<code>{note[4:]}</code>\n'
|
|
await message.edit(text)
|
|
|
|
|
|
@Client.on_message(filters.command(['clear'], prefix) & filters.me)
|
|
async def clear_note(_, message: Message):
|
|
if len(message.text.split()) >= 2:
|
|
note_name = message.text.split(maxsplit=1)[1]
|
|
find_note = db.get('core.notes', f'note{note_name}', False)
|
|
if find_note:
|
|
db.remove('core.notes', f'note{note_name}')
|
|
await message.edit(f'<b>Note {note_name} deleted</b>')
|
|
else:
|
|
await message.edit('<b>There is no such note</b>')
|
|
else:
|
|
await message.edit(f'<b>Example: <code>{prefix}clear note_name</code></b>')
|
|
|
|
|
|
modules_help['notes'] = {
|
|
'save [name]*': 'Save note',
|
|
'note [name]*': 'Get saved note',
|
|
'notes': 'Get note list',
|
|
'clear [name]*': 'Delete note',
|
|
}
|