mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2026-01-01 02:24:52 +00:00
Some Improvement (#47)
This commit is contained in:
parent
58d093b51e
commit
63e76023e0
18 changed files with 189 additions and 103 deletions
30
README.md
30
README.md
|
|
@ -4,13 +4,13 @@
|
|||
</h1>
|
||||
|
||||
## NOTES
|
||||
This repo has many bugs and i dont have time to fix it. If you can help me, please open pull request (PR).
|
||||
This repo has some small bugs and i dont have time to fix it. If you can help me, please open pull request (PR).
|
||||
|
||||
## Demo
|
||||
You can check demo this repo in this bot [MissKatyPyro](https://t.me/MissKatyRoBot)
|
||||
|
||||
## Features and Give Support
|
||||
* Please open this web https://yasirpedia.eu.org/ to check some feature or give support to me.
|
||||
* Please open this web https://yasirpedia.eu.org/ to know about me or support me.
|
||||
|
||||
## Variables
|
||||
|
||||
|
|
@ -23,9 +23,9 @@ You can check demo this repo in this bot [MissKatyPyro](https://t.me/MissKatyRoB
|
|||
* `LOG_CHANNEL` : A channel to log the activities of bot. Make sure bot is an admin in the channel.
|
||||
* `USER_SESSION` : Session string for Userbot.
|
||||
### Optional Variables
|
||||
Check by yourself for optional vars.
|
||||
Check by yourself in config files.
|
||||
|
||||
## Deploy (Must Use Docker to Run This Bot)
|
||||
## Deploy (Must Use Docker to Run This Bot, since i had make it built in all requirements)
|
||||
|
||||
- Start Docker daemon (Skip if already running):
|
||||
```
|
||||
|
|
@ -43,8 +43,28 @@ sudo docker run misskaty
|
|||
```
|
||||
sudo docker ps
|
||||
```
|
||||
sudo docker stop <pid>
|
||||
|
||||
#### Build And Run The Docker Image Using docker-compose
|
||||
|
||||
- Install docker-compose
|
||||
```
|
||||
sudo docker stop id
|
||||
sudo apt install docker-compose
|
||||
```
|
||||
- Build and run Docker image or to view current running image:
|
||||
```
|
||||
sudo docker-compose up
|
||||
```
|
||||
- After editing files with nano for example (nano start.sh):
|
||||
```
|
||||
sudo docker-compose up --build
|
||||
```
|
||||
- To stop the running image:
|
||||
```
|
||||
sudo docker ps
|
||||
```
|
||||
```
|
||||
sudo docker-compose stop <pid>
|
||||
```
|
||||
|
||||
----
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
ADMINS=617426792
|
||||
API_HASH=
|
||||
DATABASE_NAME=
|
||||
API_ID=
|
||||
SUPPORT_CHAT=YasirPediaChannel
|
||||
DATABASE_URI=mongodb+srv://
|
||||
BOT_TOKEN=
|
||||
LOG_CHANNEL=-100
|
||||
DATABASE_NAME=MissKatyPyro
|
||||
DATABASE_URI=mongodb+srv://
|
||||
LOG_CHANNEL=
|
||||
SUPPORT_CHAT=YasirPediaChannel
|
||||
USER_SESSION=
|
||||
OPENAI_API=
|
||||
CURRENCY_API=
|
||||
|
|
|
|||
13
locales/en-US/grup_tools.json
Normal file
13
locales/en-US/grup_tools.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"sudo_join_msg": "Wow, my cool owner just joined the group!",
|
||||
"log_bot_added": "#New Group\nGroup = {ttl}(<code>{cid}</code>)\nNumber of Members = <code>{tot}</code>\nAdded by - {r_j}",
|
||||
"support_btn": "Support",
|
||||
"help_btn": "ℹ️ Help",
|
||||
"update_btn": "📢 Updates",
|
||||
"chat_not_allowed": "<b>CHAT NOT ALLOWED 🐞\n\nMy owner has banned me from working here! You can contact the owner of this bot..</b>",
|
||||
"welcome_thanks": "<b>Thank you for adding me to {ttl} ❣️\n\nIf you have any problems or suggestions, you can contact me.</b>",
|
||||
"capt_welc": "Hi {umention} [<code>{uid}</code>], Welcome to the {ttl} group.",
|
||||
"combot_msg": "<b>#CAS Federation Ban</b>\nUser {umention} [<code>{uid}</code>] has been detected as a spambot and has been banned. Powered by <a href='https://api.cas.chat/check?user_id={u.id}'>Combot AntiSpam.</a>",
|
||||
"spamwatch_msg": "<b>#SpamWatch Federation Ban</b>\nUser {umention} [<code>{uid}</code>] has been banned for <code>{reas}</code>.\n" ,
|
||||
"welcpic_msg": "Welcome {userr} [{id}]"
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"no_uname": "<code>No Username</code>",
|
||||
"no_last_name": "<code>No Last Name</code>",
|
||||
"uname_change_msg": "✨ Changed username from {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"lastname_change_msg": "✨ Changed last name from {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"firstname_change_msg": "✨ Changed first name from {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"uname_change_msg": "✨ Changed username from {bef} ➡️ {aft}.\n",
|
||||
"lastname_change_msg": "✨ Changed last name from {bef} ➡️ {aft}.\n",
|
||||
"firstname_change_msg": "✨ Changed first name from {bef} ➡️ {aft}.\n",
|
||||
"set_sangmata_help": "Use <code>/{cmd} on</code>, to enable sangmata. If you want disable, you can use off parameter.",
|
||||
"sangmata_already_on": "SangMata already enabled in your groups.",
|
||||
"sangmata_enabled": "Sangmata enabled in your groups.",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"no_res": "No result found for `{kweri}`",
|
||||
"dl_btn": "Download",
|
||||
"back": "Back",
|
||||
"yts_msg": "Published {pub}\n\n<b>❯ Duration:</b> {dur}\n<b>❯ Views:</b> {vi}\n<b>❯ Uploader:</b> <a href={clink}>{cname}</a>\n\n",
|
||||
"yts_msg": "Published {pub}\n\n<b>❯ Duration:</b> {dur}\n<b>❯ Views:</b> {vi}\n<b>❯ Uploader:</b> <a href='{clink}'>{cname}</a>\n\n",
|
||||
"invalid_link": "Please input a valid YT-DLP Supported URL",
|
||||
"err_parse": "Failed parse URL, check logs..",
|
||||
"wait": "Please wait..",
|
||||
|
|
|
|||
13
locales/id-ID/grup_tools.json
Normal file
13
locales/id-ID/grup_tools.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"sudo_join_msg": "Waw, Pemilikku yang keren baru saja bergabung ke grup!",
|
||||
"log_bot_added": "#GrupBaru\nGrup = {ttl}(<code>{cid}</code>)\nJumlah Anggota = <code>{tot}</code>\nDitambahkan oleh - {r_j}",
|
||||
"support_btn": "Dukungan",
|
||||
"help_btn": "ℹ️ Bantuan",
|
||||
"update_btn": "📢 Updates",
|
||||
"chat_not_allowed": "<b>CHAT TIDAK DIIJINKAN 🐞\n\nPemilik saya sudah melarang saya untuk bekerja disini! Kamu bisa menghubungi pemilik bot ini..</b>",
|
||||
"welcome_thanks": "<b>Terimakasih sudah menambahkan saya di {ttl} ❣️\n\nJika ada kendala atau saran bisa kontak ke saya.</b>",
|
||||
"capt_welc": "Hai {umention} [<code>{uid}</code>], Selamat datang digrup {ttl}.",
|
||||
"combot_msg": "<b>#CAS Federation Ban</b>\nPengguna {umention} [<code>{uid}</code>] terdeteksi sebagai spambot dan telah dikeluarkan. Powered by <a href='https://api.cas.chat/check?user_id={u.id}'>Combot AntiSpam.</a>",
|
||||
"spamwatch_msg": "<b>#SpamWatch Federation Ban</b>\nPengguna {umention} [<code>{uid}</code>] telah dikeluarkan karena <code>{reas}</code>.\n",
|
||||
"welcpic_msg": "Selamat Datang {userr} [{id}]"
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"no_uname": "<code>Tanpa Username</code>",
|
||||
"no_last_name": "<code>Tanpa Nama Belakang</code>",
|
||||
"uname_change_msg": "✨ Mengubah nama depan dari {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"lastname_change_msg": "✨ Mengubah nama belakang dari {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"firstname_change_msg": "✨ Mengubah nama depan dari {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"uname_change_msg": "✨ Mengubah nama depan dari {bef} ➡️ {aft}.\n",
|
||||
"lastname_change_msg": "✨ Mengubah nama belakang dari {bef} ➡️ {aft}.\n",
|
||||
"firstname_change_msg": "✨ Mengubah nama depan dari {bef} ➡️ {aft}.\n",
|
||||
"set_sangmata_help": "Gunakan <code>/{cmd} on</code>, untuk mengaktifkan sangmata. Jika Anda ingin menonaktifkan, Anda dapat menggunakan parameter off.",
|
||||
"sangmata_already_on": "SangMata telah diaktifkan di grup Anda.",
|
||||
"sangmata_enabled": "Sangmata diaktifkan di grup Anda.",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"no_res": "Tidak ada hasil yang ditemukan untuk `{kweri}`",
|
||||
"dl_btn": "Unduh",
|
||||
"kembali": "kembali",
|
||||
"yts_msg": "Dipublikasikan {pub}\n\n<b>❯ Durasi:</b> {dur}\n<b>❯ Penayangan:</b> {vi}\n<b>❯ Pengunggah:< /b> <a href={clink}>{cname}</a>\n\n",
|
||||
"yts_msg": "Dipublikasikan {pub}\n\n<b>❯ Durasi:</b> {dur}\n<b>❯ Penayangan:</b> {vi}\n<b>❯ Pengunggah:</b> <a href='{clink}'>{cname}</a>\n\n",
|
||||
"invalid_link": "Masukkan URL yang Didukung YT-DLP yang valid",
|
||||
"err_parse": "Gagal menguraikan URL, periksa log..",
|
||||
"tunggu": "Harap tunggu..",
|
||||
|
|
|
|||
13
locales/id-JW/grup_tools.json
Normal file
13
locales/id-JW/grup_tools.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"sudo_join_msg": "Waw, Pemilikku sing ganteng gabung menyang grup!",
|
||||
"log_bot_added": "#GrupBaru\nGrup = {ttl}(<code>{cid}</code>)\nJumlah Anggota = <code>{tot}</code>\nDitambahake dening - {r_j}",
|
||||
"support_btn": "Dukungan",
|
||||
"help_btn": "ℹ️ Pitulungan",
|
||||
"update_btn": "📢 Nganyari",
|
||||
"chat_not_allowed": "<b>CHAT ORA DIIJINKE 🐞\n\nPemilik ku wes nglarang aku kerja neng kene! Sampeyan bisa hubungi pemilik bot iki..</b>",
|
||||
"welcome_thanks": "<b>Terimakasih wis nambahi saya ing {ttl} ❣️\n\nYen ana kendal utawa saran bisa hubungi saya.</b>",
|
||||
"capt_welc": "Hai {umention} [<code>{uid}</code>], sugeng rawuh ing grup {ttl}.",
|
||||
"combot_msg": "<b>Larangan Federasi #CAS</b>\nPengguna {umention} [<kode>{uid}</code>] dideteksi minangka spambot lan wis dibusak. Powered by <a href='https://api.cas.chat/check?user_id={u.id}'>Combot AntiSpam.</a>",
|
||||
"spamwatch_msg": "<b>Larangan Federasi #SpamWatch</b>\nPengguna {umention} [<code>{uid}</code>] wis dibusak amarga <code>{reas}</code>.\n" ,
|
||||
"welcpic_msg": "Sugeng Rawuh {userr} [{id}]"
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"no_uname": "<code>Ora Jeneng Panganggo</code>",
|
||||
"no_last_name": "<kode>Ora Ana Jeneng mburi</code>",
|
||||
"uname_change_msg": "✨ Jeneng pangguna diganti saka {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"lastname_change_msg": "✨ Ganti jeneng mburi saka {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"firstname_change_msg": "✨ Ganti jeneng ngarep saka {bef} ➡️ <code>{aft}</code>.\n",
|
||||
"uname_change_msg": "✨ Jeneng pangguna diganti saka {bef} ➡️ {aft}.\n",
|
||||
"lastname_change_msg": "✨ Ganti jeneng mburi saka {bef} ➡️ {aft}.\n",
|
||||
"firstname_change_msg": "✨ Ganti jeneng ngarep saka {bef} ➡️ {aft}.\n",
|
||||
"set_sangmata_help": "Gunakake <code>/{cmd} on</code>, kanggo ngaktifake sangmata. Yen sampeyan pengin mateni, sampeyan bisa nggunakake parameter mati.",
|
||||
"sangmata_already_on": "SangMata wis diaktifake ing grup sampeyan.",
|
||||
"sangmata_enabled": "Sangmata diaktifake ing grup sampeyan.",
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
"back_btn": "↩️ Mbalik",
|
||||
"dl_text": "⬇️ Unduh",
|
||||
"cat_text": "💠 Kategori",
|
||||
"kualitas": "Kualitas",
|
||||
"kualitas": "Kwalitas",
|
||||
"ex_data": "👇 Ekstrak Data ",
|
||||
"unauth": "Tombol iki dudu kanggo sampeyan..",
|
||||
"invalid_cb": "Data callback ora valid, kirim printah maneh..",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"no_res": "Ora ana asil kanggo `{kweri}`",
|
||||
"dl_btn": "Ngunduh",
|
||||
"back": "Mbalik",
|
||||
"yts_msg": "Diterbitake {pub}\n\n<b>❯ Duration:</b> {dur}\n<b>❯ Ndeleng:</b> {vi}\n<b>❯ Uploader:< /b> <a href={clink}>{cname}</a>\n\n",
|
||||
"yts_msg": "Diterbitake {pub}\n\n<b>❯ Duration:</b> {dur}\n<b>❯ Ndeleng:</b> {vi}\n<b>❯ Uploader:</b> <a href='{clink}'>{cname}</a>\n\n",
|
||||
"invalid_link": "Mangga lebokna URL Dhukungan YT-DLP sing valid",
|
||||
"err_parse": "Gagal ngurai URL, mriksa log..",
|
||||
"ngenteni": "Tulung ngenteni..",
|
||||
|
|
|
|||
|
|
@ -17,27 +17,27 @@ async def member_permissions(chat_id: int, user_id: int):
|
|||
perms = []
|
||||
try:
|
||||
member = (await app.get_chat_member(chat_id, user_id)).privileges
|
||||
except Exception:
|
||||
if member.can_post_messages:
|
||||
perms.append("can_post_messages")
|
||||
if member.can_edit_messages:
|
||||
perms.append("can_edit_messages")
|
||||
if member.can_delete_messages:
|
||||
perms.append("can_delete_messages")
|
||||
if member.can_restrict_members:
|
||||
perms.append("can_restrict_members")
|
||||
if member.can_promote_members:
|
||||
perms.append("can_promote_members")
|
||||
if member.can_change_info:
|
||||
perms.append("can_change_info")
|
||||
if member.can_invite_users:
|
||||
perms.append("can_invite_users")
|
||||
if member.can_pin_messages:
|
||||
perms.append("can_pin_messages")
|
||||
if member.can_manage_video_chats:
|
||||
perms.append("can_manage_video_chats")
|
||||
return perms
|
||||
except:
|
||||
return []
|
||||
if member.can_post_messages:
|
||||
perms.append("can_post_messages")
|
||||
if member.can_edit_messages:
|
||||
perms.append("can_edit_messages")
|
||||
if member.can_delete_messages:
|
||||
perms.append("can_delete_messages")
|
||||
if member.can_restrict_members:
|
||||
perms.append("can_restrict_members")
|
||||
if member.can_promote_members:
|
||||
perms.append("can_promote_members")
|
||||
if member.can_change_info:
|
||||
perms.append("can_change_info")
|
||||
if member.can_invite_users:
|
||||
perms.append("can_invite_users")
|
||||
if member.can_pin_messages:
|
||||
perms.append("can_pin_messages")
|
||||
if member.can_manage_video_chats:
|
||||
perms.append("can_manage_video_chats")
|
||||
return perms
|
||||
|
||||
|
||||
async def check_perms(
|
||||
|
|
@ -126,12 +126,8 @@ async def check_perms(
|
|||
else:
|
||||
sender = message.reply_text
|
||||
chat = message.chat
|
||||
# TODO: Cache all admin permissions in db.
|
||||
if not message.from_user:
|
||||
# For anonymous admins
|
||||
if message.sender_chat and message.sender_chat.id == message.chat.id:
|
||||
return True
|
||||
return False
|
||||
return bool(message.sender_chat and message.sender_chat.id == message.chat.id)
|
||||
user = await chat.get_member(message.from_user.id)
|
||||
if user.status == enums.ChatMemberStatus.OWNER:
|
||||
return True
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from time import time
|
|||
|
||||
from pyrogram import enums, filters
|
||||
from pyrogram.errors import ChatAdminRequired, FloodWait
|
||||
from pyrogram.types import ChatPermissions
|
||||
from pyrogram.types import ChatPermissions, ChatPrivileges
|
||||
|
||||
from database.warn_db import add_warn, get_warn, remove_warns
|
||||
from misskaty import app
|
||||
|
|
@ -366,27 +366,31 @@ async def promoteFunc(client, message, strings):
|
|||
if message.command[0][0] == "f":
|
||||
await message.chat.promote_member(
|
||||
user_id=user_id,
|
||||
can_change_info=bot.privileges.can_change_info,
|
||||
can_invite_users=bot.privileges.can_invite_users,
|
||||
can_delete_messages=bot.privileges.can_delete_messages,
|
||||
can_restrict_members=bot.privileges.can_restrict_members,
|
||||
can_pin_messages=bot.privileges.can_pin_messages,
|
||||
can_promote_members=bot.privileges.can_promote_members,
|
||||
can_manage_chat=bot.privileges.can_manage_chat,
|
||||
can_manage_video_chats=bot.privileges.can_manage_video_chats,
|
||||
privileges=ChatPrivileges(
|
||||
can_change_info=bot.privileges.can_change_info,
|
||||
can_invite_users=bot.privileges.can_invite_users,
|
||||
can_delete_messages=bot.privileges.can_delete_messages,
|
||||
can_restrict_members=bot.privileges.can_restrict_members,
|
||||
can_pin_messages=bot.privileges.can_pin_messages,
|
||||
can_promote_members=bot.privileges.can_promote_members,
|
||||
can_manage_chat=bot.privileges.can_manage_chat,
|
||||
can_manage_video_chats=bot.privileges.can_manage_video_chats,
|
||||
),
|
||||
)
|
||||
return await message.reply_text(strings("full_promote").format(umention=umention))
|
||||
|
||||
await message.chat.promote_member(
|
||||
user_id=user_id,
|
||||
can_change_info=False,
|
||||
can_invite_users=bot.privileges.can_invite_users,
|
||||
can_delete_messages=bot.privileges.can_delete_messages,
|
||||
can_restrict_members=bot.privileges.can_restrict_members,
|
||||
can_pin_messages=bot.privileges.can_pin_messages,
|
||||
can_promote_members=False,
|
||||
can_manage_chat=bot.privileges.can_manage_chat,
|
||||
can_manage_video_chats=bot.privileges.can_manage_video_chats,
|
||||
privileges=ChatPrivileges(
|
||||
can_change_info=False,
|
||||
can_invite_users=bot.privileges.can_invite_users,
|
||||
can_delete_messages=bot.privileges.can_delete_messages,
|
||||
can_restrict_members=bot.privileges.can_restrict_members,
|
||||
can_pin_messages=bot.privileges.can_pin_messages,
|
||||
can_promote_members=False,
|
||||
can_manage_chat=bot.privileges.can_manage_chat,
|
||||
can_manage_video_chats=bot.privileges.can_manage_video_chats,
|
||||
),
|
||||
)
|
||||
await message.reply_text(strings("normal_promote").format(umention=umention))
|
||||
|
||||
|
|
@ -408,14 +412,16 @@ async def demote(client, message, strings):
|
|||
return await message.reply_text(strings("demote_sudo_err"))
|
||||
await message.chat.promote_member(
|
||||
user_id=user_id,
|
||||
can_change_info=False,
|
||||
can_invite_users=False,
|
||||
can_delete_messages=False,
|
||||
can_restrict_members=False,
|
||||
can_pin_messages=False,
|
||||
can_promote_members=False,
|
||||
can_manage_chat=False,
|
||||
can_manage_video_chats=False,
|
||||
privileges=ChatPrivileges(
|
||||
can_change_info=False,
|
||||
can_invite_users=False,
|
||||
can_delete_messages=False,
|
||||
can_restrict_members=False,
|
||||
can_pin_messages=False,
|
||||
can_promote_members=False,
|
||||
can_manage_chat=False,
|
||||
can_manage_video_chats=False,
|
||||
),
|
||||
)
|
||||
umention = (await app.get_users(user_id)).mention
|
||||
await message.reply_text(f"Demoted! {umention}")
|
||||
|
|
|
|||
|
|
@ -18,15 +18,18 @@ LOGGER = logging.getLogger(__name__)
|
|||
@app.on_message(filters.command(["currency"], COMMAND_HANDLER))
|
||||
async def currency(c: Client, m: Message):
|
||||
if CURRENCY_API is None:
|
||||
return await kirimPesan(m, f"<code>Oops!!get the API from</code> " "<a href='https://app.exchangerate-api.com/sign-up'>HERE</a> " "<code>& add it to config vars</code> (<code>CURRENCY_API</code>)", disable_web_page_preview=True)
|
||||
if len(m.text.split()) == 4:
|
||||
teks = m.text.split()
|
||||
amount = teks[1]
|
||||
currency_from = teks[2]
|
||||
currency_to = teks[3]
|
||||
else:
|
||||
return await kirimPesan(
|
||||
m,
|
||||
"<code>Oops!!get the API from</code> <a href='https://app.exchangerate-api.com/sign-up'>HERE</a> <code>& add it to config vars</code> (<code>CURRENCY_API</code>)",
|
||||
disable_web_page_preview=True,
|
||||
)
|
||||
if len(m.text.split()) != 4:
|
||||
return await kirimPesan(m, f"Use format /{m.command[0]} [amount] [currency_from] [currency_to] to convert currency.")
|
||||
|
||||
teks = m.text.split()
|
||||
amount = teks[1]
|
||||
currency_from = teks[2]
|
||||
currency_to = teks[3]
|
||||
if amount.isdigit():
|
||||
url = f"https://v6.exchangerate-api.com/v6/{CURRENCY_API}/" f"pair/{currency_from}/{currency_to}/{amount}"
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ __HELP__ = """
|
|||
/json - Send structure message Telegram in JSON using Pyrogram Style.
|
||||
"""
|
||||
|
||||
var = {}
|
||||
teskode = {}
|
||||
|
||||
|
||||
async def edit_or_reply(msg, **kwargs):
|
||||
func = msg.edit_text if msg.from_user.is_self else msg.reply
|
||||
|
|
@ -51,7 +54,8 @@ async def edit_or_reply(msg, **kwargs):
|
|||
@use_chat_lang()
|
||||
async def log_file(bot, message, strings):
|
||||
"""Send log file"""
|
||||
try:
|
||||
msg = await kirimPesan(message, "<b>Reading bot logs ...</b>")
|
||||
if len(message.command) == 1:
|
||||
await message.reply_document(
|
||||
"MissKatyLogs.txt",
|
||||
caption="Log Bot MissKatyPyro",
|
||||
|
|
@ -66,9 +70,11 @@ async def log_file(bot, message, strings):
|
|||
]
|
||||
),
|
||||
)
|
||||
except:
|
||||
err = traceback.format_exc()
|
||||
await message.reply(str(err))
|
||||
await hapusPesan(msg)
|
||||
elif len(message.command) == 2:
|
||||
val = message.text.split()
|
||||
tail = await shell_exec(f"tail -n {val[1]} -v MissKatyLogs.txt")
|
||||
await editPesan(msg, f"<pre language='bash'>{html.escape(tail[0])}</pre>")
|
||||
|
||||
|
||||
@app.on_message(filters.command(["donate"], COMMAND_HANDLER))
|
||||
|
|
@ -192,6 +198,9 @@ async def cmd_eval(self, message: types.Message, strings) -> Optional[str]:
|
|||
"self": self,
|
||||
"humantime": humantime,
|
||||
"m": message,
|
||||
"var": var,
|
||||
"app": app,
|
||||
"teskode": teskode,
|
||||
"re": re,
|
||||
"os": os,
|
||||
"asyncio": asyncio,
|
||||
|
|
@ -205,6 +214,8 @@ async def cmd_eval(self, message: types.Message, strings) -> Optional[str]:
|
|||
"http": http,
|
||||
"replied": message.reply_to_message,
|
||||
}
|
||||
eval_vars.update(var)
|
||||
eval_vars.update(teskode)
|
||||
try:
|
||||
return "", await meval(code, globals(), **eval_vars)
|
||||
except Exception as e: # skipcq: PYL-W0703
|
||||
|
|
@ -232,7 +243,7 @@ async def cmd_eval(self, message: types.Message, strings) -> Optional[str]:
|
|||
el_str = get_readable_time(el_us)
|
||||
except:
|
||||
el_str = "1s"
|
||||
if el_str == "" or el_str is None:
|
||||
if not el_str or el_str is None:
|
||||
el_str = "0.1s"
|
||||
|
||||
out = out_buf.getvalue()
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ from misskaty import BOT_USERNAME, app
|
|||
from misskaty.core.decorator.ratelimiter import ratelimiter
|
||||
from misskaty.core.decorator.errors import asyncify, capture_err
|
||||
from misskaty.helper.http import http
|
||||
from misskaty.helper.localization import use_chat_lang
|
||||
from misskaty.vars import COMMAND_HANDLER, LOG_CHANNEL, SUDO, SUPPORT_CHAT
|
||||
from utils import temp
|
||||
|
||||
|
|
@ -47,14 +48,14 @@ def draw_multiple_line_text(image, text, font, text_start_height):
|
|||
|
||||
|
||||
@asyncify
|
||||
def welcomepic(pic, user, chat, id):
|
||||
def welcomepic(pic, user, chat, id, strings):
|
||||
background = Image.open("assets/bg.png") # <- Background Image (Should be PNG)
|
||||
background = background.resize((1024, 500), Image.ANTIALIAS)
|
||||
pfp = Image.open(pic).convert("RGBA")
|
||||
pfp = circle(pfp)
|
||||
pfp = pfp.resize((265, 265)) # Resizes the Profilepicture so it fits perfectly in the circle
|
||||
font = ImageFont.truetype("assets/Calistoga-Regular.ttf", 37) # <- Text Font of the Member Count. Change the text size for your preference
|
||||
member_text = f"Selamat Datang {user} [{id}]" # <- Text under the Profilepicture with the Membercount
|
||||
member_text = strings("welcpic_msg").format(userr=user, id=id) # <- Text under the Profilepicture with the Membercount
|
||||
draw_multiple_line_text(background, member_text, font, 395)
|
||||
draw_multiple_line_text(background, chat, font, 47)
|
||||
ImageDraw.Draw(background).text(
|
||||
|
|
@ -70,14 +71,15 @@ def welcomepic(pic, user, chat, id):
|
|||
|
||||
|
||||
@app.on_chat_member_updated(filters.group & filters.chat([-1001128045651, -1001777794636]))
|
||||
async def member_has_joined(c: app, member: ChatMemberUpdated):
|
||||
@use_chat_lang()
|
||||
async def member_has_joined(c: app, member: ChatMemberUpdated, strings):
|
||||
if not member.new_chat_member or member.new_chat_member.status in {"banned", "left", "restricted"} or member.old_chat_member:
|
||||
return
|
||||
user = member.new_chat_member.user if member.new_chat_member else member.from_user
|
||||
if user.id in SUDO:
|
||||
await c.send_message(
|
||||
member.chat.id,
|
||||
"Waw, owner ku yang keren baru saja bergabung ke grup!",
|
||||
strings("sudo_join_msg"),
|
||||
)
|
||||
return
|
||||
elif user.is_bot:
|
||||
|
|
@ -98,7 +100,7 @@ async def member_has_joined(c: app, member: ChatMemberUpdated):
|
|||
except AttributeError:
|
||||
pic = "assets/profilepic.png"
|
||||
try:
|
||||
welcomeimg = await welcomepic(pic, user.first_name, member.chat.title, user.id)
|
||||
welcomeimg = await welcomepic(pic, user.first_name, member.chat.title, user.id, strings)
|
||||
temp.MELCOW[f"welcome-{member.chat.id}"] = await c.send_photo(
|
||||
member.chat.id,
|
||||
photo=welcomeimg,
|
||||
|
|
@ -113,7 +115,7 @@ async def member_has_joined(c: app, member: ChatMemberUpdated):
|
|||
apispamwatch = (await http.get(f"https://api.spamwat.ch/banlist/{user.id}", headers=headers)).json()
|
||||
if not apispamwatch.get("error"):
|
||||
await app.ban_chat_member(member.chat.id, user.id, datetime.now() + timedelta(seconds=30))
|
||||
userspammer += f"<b>#SpamWatch Federation Ban</b>\nUser {mention} [<code>{user.id}</code>] has been kicked because <code>{apispamwatch.get('reason')}</code>.\n"
|
||||
userspammer += strings("spamwatch_msg").format(umention=user.mention, uid=user.id, reas=apispamwatch.get("reason"))
|
||||
except Exception as err:
|
||||
LOGGER.error(f"ERROR in Spamwatch Detection. {err}")
|
||||
# Combot API Detection
|
||||
|
|
@ -121,7 +123,7 @@ async def member_has_joined(c: app, member: ChatMemberUpdated):
|
|||
apicombot = (await http.get(f"https://api.cas.chat/check?user_id={user.id}")).json()
|
||||
if apicombot.get("ok") == "true":
|
||||
await app.ban_chat_member(member.chat.id, user.id, datetime.now() + timedelta(seconds=30))
|
||||
userspammer += f"<b>#CAS Federation Ban</b>\nUser {mention} [<code>{user.id}</code>] detected as spambot and has been kicked. Powered by <a href='https://api.cas.chat/check?user_id={user.id}'>Combot AntiSpam.</a>"
|
||||
userspammer += strings("combot_msg").format(umention=user.mention, uid=user.id)
|
||||
except Exception as err:
|
||||
LOGGER.error(f"ERROR in Combot API Detection. {err}")
|
||||
if userspammer != "":
|
||||
|
|
@ -134,7 +136,8 @@ async def member_has_joined(c: app, member: ChatMemberUpdated):
|
|||
|
||||
|
||||
@app.on_message(filters.new_chat_members & filters.group)
|
||||
async def save_group(bot, message):
|
||||
@use_chat_lang()
|
||||
async def save_group(bot, message, strings):
|
||||
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):
|
||||
|
|
@ -142,16 +145,16 @@ async def save_group(bot, message):
|
|||
r_j = message.from_user.mention if message.from_user else "Anonymous"
|
||||
await bot.send_message(
|
||||
LOG_CHANNEL,
|
||||
f"#NewGroup\nGroup = {message.chat.title}(<code>{message.chat.id}</code>)\nMembers Count = <code>{total}</code>\nAdded by - {r_j}",
|
||||
strings("log_bot_added").format(ttl=message.chat.title, cid=message.chat.id, tot=total, r_j=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}")]]
|
||||
buttons = [[InlineKeyboardButton(strings("support_btn"), url=f"https://t.me/{SUPPORT_CHAT}")]]
|
||||
reply_markup = InlineKeyboardMarkup(buttons)
|
||||
k = await message.reply(
|
||||
text="<b>CHAT NOT ALLOWED 🐞\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..</b>",
|
||||
text=strings("chat_not_allowed"),
|
||||
reply_markup=reply_markup,
|
||||
)
|
||||
|
||||
|
|
@ -163,13 +166,13 @@ async def save_group(bot, message):
|
|||
return
|
||||
buttons = [
|
||||
[
|
||||
InlineKeyboardButton("ℹ️ Help", url=f"https://t.me/{temp.U_NAME}?start=help"),
|
||||
InlineKeyboardButton("📢 Updates", url="https://t.me/YasirPediaChannel"),
|
||||
InlineKeyboardButton(strings("help_btn"), url=f"https://t.me/{temp.U_NAME}?start=help"),
|
||||
InlineKeyboardButton(strings("update_btn"), url="https://t.me/YasirPediaChannel"),
|
||||
]
|
||||
]
|
||||
reply_markup = InlineKeyboardMarkup(buttons)
|
||||
await message.reply_text(
|
||||
text=f"<b>Terimakasih sudah menambahkan saya di {message.chat.title} ❣️\n\nJika ada kendala atau saran bisa kontak ke saya.</b>",
|
||||
text=strings("welcome_thanks").format(ttl=message.chat.title),
|
||||
reply_markup=reply_markup,
|
||||
)
|
||||
else:
|
||||
|
|
@ -184,11 +187,11 @@ async def save_group(bot, message):
|
|||
except:
|
||||
pass
|
||||
try:
|
||||
welcomeimg = await welcomepic(pic, u.first_name, message.chat.title, u.id)
|
||||
welcomeimg = await welcomepic(pic, u.first_name, message.chat.title, u.id, strings)
|
||||
temp.MELCOW[f"welcome-{message.chat.id}"] = await app.send_photo(
|
||||
message.chat.id,
|
||||
photo=welcomeimg,
|
||||
caption=f"Hai {u.mention}, Selamat datang digrup {message.chat.title}.",
|
||||
caption=strings("capt_welc").format(umention=u.mention, uid=u.id, ttl=message.chat.title),
|
||||
)
|
||||
userspammer = ""
|
||||
# Spamwatch Detection
|
||||
|
|
@ -197,7 +200,7 @@ async def save_group(bot, message):
|
|||
apispamwatch = (await http.get(f"https://api.spamwat.ch/banlist/{u.id}", headers=headers)).json()
|
||||
if not apispamwatch.get("error"):
|
||||
await app.ban_chat_member(message.chat.id, u.id, datetime.now() + timedelta(seconds=30))
|
||||
userspammer += f"<b>#SpamWatch Federation Ban</b>\nUser {u.mention} [<code>{u.id}</code>] has been kicked because <code>{apispamwatch.get('reason')}</code>.\n"
|
||||
userspammer += strings("spamwatch_msg").format(umention=u.mention, uid=u.id, reas=apispamwatch.get("reason"))
|
||||
except Exception as err:
|
||||
LOGGER.error(f"ERROR in Spamwatch Detection. {err}")
|
||||
# Combot API Detection
|
||||
|
|
@ -205,7 +208,7 @@ async def save_group(bot, message):
|
|||
apicombot = (await http.get(f"https://api.cas.chat/check?user_id={u.id}")).json()
|
||||
if apicombot.get("ok") == "true":
|
||||
await app.ban_chat_member(message.chat.id, u.id, datetime.now() + timedelta(seconds=30))
|
||||
userspammer += f"<b>#CAS Federation Ban</b>\nUser {u.mention} [<code>{u.id}</code>] detected as spambot and has been kicked. Powered by <a href='https://api.cas.chat/check?user_id={u.id}'>Combot AntiSpam.</a>"
|
||||
userspammer += strings("combot_msg").format(umention=u.mention, uid=u.id)
|
||||
except Exception as err:
|
||||
LOGGER.error(f"ERROR in Combot API Detection. {err}")
|
||||
if userspammer != "":
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import re
|
|||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
from database.users_chats_db import db
|
||||
from pyrogram import filters
|
||||
from pyrogram.errors import ChannelPrivate
|
||||
from misskaty import app, BOT_USERNAME, HELPABLE, BOT_NAME
|
||||
from misskaty.vars import COMMAND_HANDLER, LOG_CHANNEL
|
||||
from misskaty.core.message_utils import *
|
||||
|
|
@ -69,7 +70,10 @@ keyboard = InlineKeyboardMarkup(
|
|||
async def start(_, message, strings):
|
||||
if message.chat.type.value != "private":
|
||||
if not await db.get_chat(message.chat.id):
|
||||
total = await app.get_chat_members_count(message.chat.id)
|
||||
try:
|
||||
total = await app.get_chat_members_count(message.chat.id)
|
||||
except ChannelPrivate:
|
||||
return await message.chat.leave()
|
||||
await app.send_message(
|
||||
LOG_CHANNEL,
|
||||
strings("newgroup_log").format(jdl=message.chat.title, id=message.chat.id, c=total),
|
||||
|
|
|
|||
Loading…
Reference in a new issue