دوست دارید برای پانیش کردن (میوت، کیک یا بن) ممبراتون به جای کامند استفاده کنید و نسبت به سرور های دیگه دیسکورد متمایز باشید؟

این مقاله به درد کسایی میخوره که از بات YAGPDB برای مدیریت ماد سرورشون استفاده میکنن!
من سینا هستم و اگه میخواید همچین پنلی داخل سرور خودتون داشته باشید تا انتهای این مقاله من رو همراهی کنید.

لازم به ذکره که کد اصلی این پنل توسط BlackWolfWoof نوشته شده، و توسط گیم گیر بهینه سازی شده.
از تغییراتی که تو این کد اعمال شده میشه به مواردی از جمله تغییر ایموجی ها از سیب و گلابی به ایموجی های رسمی و ساده و همچنین اضافه کردن قابلیت بن و میوت دائمی اشاره کرد.

شروع کار با YAGPDB!

در مرحله اول کنترل پنل یاگ (YAGPDB) رو باز کنید.

از بالا سمت چپ صفحه سرور موردنظر خودتون رو انتخاب کنید.

و بعد از اون از منوی Navigation سمت چپ گزینه Custom Commands زیر مجموعه منوی Core رو باز کنید

صفحه ای که جلوی شما قرار میگیره لیستی از گروه های شماست که داخل هر گروه میتونید یک سری کد تعریف کنید.
پیشنهاد من به شما اینه که کد هاتون رو مثل من گروه بندی کنید تا شلخته نباشه و بعدا سردرگم نشید ?.

گروه جدیدی بسازید و اسم اون رو Mod Menu یا Mod Panel بذارید. (این نام گذاری بر اساس سلیقه خودتونه و تاثیری در نتیجه نداره)

از زیر قسمت Name داخل گزینه Whitelist roles for who can use these commands رول هایی رو انتخاب کنید که میخواید دسترسی به بازکردن این پنل داشته باشن.

و سپس تغییراتتون رو Save کنید.

روی Create a new Custom Command کلیک کنید و یک کاستوم کامند جدید بسازید.

تایپ اون رو روی Command (mention/cmd prefix) بذارید.

دقت کنید چون اینجا تایپ ما روی Command هستش کلمه مد نظر رو باید جلوی پرفیکس (کاراکتر یا کاراکتر هایی که قبل از دستورات قرار داده میشه) بذارید.
پرفیکس بات YAGPDB از قسمت Command Settings زیر مجموعه منوی Core قابل دسترسی و تغییره!

و مقدار تریگر (فعال کننده) رو کلمه mod قرار بدید. (این کلمه قراره باعث بازشدن پنل شما بشه، هرچیزی میتونید جای mod بذارید)

بعد از اون کد زیر رو به صورت کامل کپی (Copy) و داخل فیلد Response پیست (Paste) کنید.

{{$prefix := index (reFindAllSubmatches `Prefix of \x60\d+\x60: \x60(.+)\x60` (exec "prefix")) 0 1}}
{{$args := parseArgs 1 (print $prefix "mod <UserID/Mention>") (carg "userid" "User")}}
{{if reFind `\d+` .StrippedMsg}}
    {{$user := userArg ($args.Get 0)}}
    {{$userid := $args.Get 0}}
    {{$users := "Unknown User"}}
    {{$usera := "https://cdn.discordapp.com/emojis/565142262401728512.png"}}
    {{if (userArg (index .CmdArgs 0))}}
        {{$userid = $user.ID}}
        {{$users = $user.String}}
        {{$usera = $user.AvatarURL "1024"}}
    {{end}}
    {{$x := sendMessageRetID nil (cembed
        "author" (sdict
            "name" (print $users "〢Mod Panel")
            "icon_url" $usera)
        "description" "⛔〢Ban\n?〢Kick\n?〢Mute\n?〢Unmute\n❌〢Close Menu" "color" 13818612)}}
    {{/*Permission Check*/}}
    {{$var1 := split (index (split (exec "viewperms") "\n") 2) ", "}}
    {{/*Ban*/}}
    {{if (in $var1 "BanMembers")}}
        {{addMessageReactions nil $x "⛔"}}
    {{end}}
    {{/*Kick*/}}
    {{if (in $var1 "KickMembers")}}
        {{if $user}}
            {{addMessageReactions nil $x "?"}}
        {{end}}
    {{end}}
    {{/*Mute*/}}
    {{if (in $var1 "ManageMessages")}}
        {{if $user}}
            {{addMessageReactions nil $x "?" "?"}}
        {{end}}
    {{end}}
    {{addMessageReactions nil $x "❌"}}
    {{$v1 := dbSetExpire .User.ID (print .CCID "-" (randInt 10000) "del_message") (print "del" $x "-" .Message.ID) 300}}
    {{$v2 := dbSetExpire .User.ID "mod_rq_message" (print "mod" $x "-" $userid) 300}}
    {{deleteMessage nil $x 300}}
    {{deleteTrigger 300}}
{{else}}This ID is invalid and doesn't exist!{{end}}

باقی موارد رو تغییر ندید.

و بعد از اون روی گزینه Save کلیک کنید تا تغییرات ما اعمال بشه.

تا الان، ما یه کدی نوشتیم، که به کلمه mod (کلمه ای که تعیین کردیم) حساسه و زمانی که این کامند اجرا بشه پنل مارو باز میکنه و ریکشن های پنل رو زیرش اضافه میکنه.
اما باز شدن پنل به تنهایی کافی نیست، ما باید یک کد دیگه هم بنویسیم که باعث بشه ریکشن های این پنل کار کنن.

روی اسم گروهی که ساختید کلیک کنید تا به لیست کد های اون گروه برسید.

و دوباره با کلیک روی گزینه Create a new Custom Command کلیک کنید و یک کاستوم کامند جدید بسازید.

تایپ اون رو روی Reaction بذارید.

و گزینه Added reactions only رو انتخاب کنید.

بعد از اون کد زیر رو به صورت کامل کپی (Copy) و داخل فیلد Response پیست (Paste) کنید.

{{$grab := ""}}
{{$call := dbGetPattern .User.ID "%message" 100 0}}
{{range $call}}
    {{if eq .UserID .User.ID}}
        {{$grab = print $grab " " .Value}}
    {{end}}
{{end}}
{{/*Delete Embed*/}}
{{$t11 := `del(?:(?P<MessageIDEmbed>\d{18})-(?P<MessageIDAuthor>\d{18}))`}}
{{range $call}}
    {{if and (eq $.Reaction.Emoji.Name "❌") (reFind $t11 .Value)}}
        {{$m := reFindAllSubmatches $t11 .Value}}
        {{if (reFind (str $.Reaction.MessageID) (str .Value))}}
            {{deleteMessage $.Reaction.ChannelID (index (index $m 0) 1) 0}}
            {{deleteMessage $.Reaction.ChannelID (index (index $m 0) 2) 0}}
            {{dbDelByID .UserID .ID}}
        {{end}}
    {{end}}
{{end}}
{{$e1 := `mod(?:(?P<MessageID>\d{18})-(?P<ModUserID>\d{18}))`}}
{{if and $call (reFind $e1 $grab)}}	{{$matches := reFindAllSubmatches $e1 $grab}}	{{$user := userArg (index (index $matches 0) 2)}}
    {{$users := "Unknown User"}}
    {{$usera := "https://cdn.discordapp.com/emojis/565142262401728512.png"}}
    {{$userid := toInt (index (index $matches 0) 2)}}
    {{if $user}}
        {{$users = $user.String}}
        {{$usera = $user.AvatarURL "1024"}}
    {{end}}
    {{/*Ban User*/}}
    {{if eq .Reaction.Emoji.Name "⛔"}}
        {{range $call}}
            {{$grab = (print $grab " " .Value)}}
        {{end}}
        {{if (reFind `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{$matches := (reFindAllSubmatches `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{if eq (str .Reaction.MessageID) (str (index (index $matches 0) 1))}}
                {{editMessage nil .Reaction.MessageID (cembed
                "author" (sdict
                    "name" (print $users "〢Mod Panel")
                    "icon_url" $usera)
                "description" "Option to ban ⛔ this user:\n\n?〢1 Day\n?〢1 Week\n?〢1 Months\n?〢12 Months\n?〢Permanent"
                "color" 12458289)}}
                {{deleteAllMessageReactions nil .Reaction.MessageID}}
                {{addMessageReactions nil .Reaction.MessageID "?" "?" "?" "?" "?" "❌"}}
                {{dbSetExpire .User.ID "modmenu" "ban" 300}}
            {{end}}
        {{end}}
    {{end}}
    {{/*Kick User*/}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{range $call}}
            {{if eq .UserID $.User.ID}}
                {{$grab = (print $grab " " .Value)}}
            {{end}}
        {{end}}
        {{if (reFind `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{$matches := (reFindAllSubmatches `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{if eq (str .Reaction.MessageID) (str (index (index $matches 0) 1))}}
                {{deleteAllMessageReactions nil (str .Reaction.MessageID)}}
                {{addMessageReactions nil (str .Reaction.MessageID) "❌"}}
                {{editMessage nil (str .Reaction.MessageID) (cembed
                "author" (sdict
                    "name" (print $users "〢Mod Panel")
                    "icon_url" $usera)
                "description" (exec "kick" $userid "Kicked by Mod Panel")
                "color" 14495300)}}
            {{end}}
        {{end}}
    {{end}}
    {{/*Mute User*/}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{range $call}}
            {{$grab = (print $grab " " .Value)}}
        {{end}}
        {{if (reFind `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{$matches := (reFindAllSubmatches `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{if eq (str .Reaction.MessageID) (str (index (index $matches 0) 1))}}
                {{editMessage nil (str .Reaction.MessageID) (cembed
                "author" (sdict
                    "name" (print $users "〢Mod Panel") 
                    "icon_url" $usera)
                "description" "Option to mute ? this user:\n\n?〢10 Minutes\n?〢1 Hours\n?〢1 Day\n?〢1 Week\n?〢Permanent"
                "color" 14495300)}}
                {{deleteAllMessageReactions nil (str .Reaction.MessageID)}}
                {{addMessageReactions nil (str .Reaction.MessageID) "?" "?" "?" "?" "?" "❌"}}
                {{dbSetExpire .User.ID "modmenu" "mute" 300}}
            {{end}}
        {{end}}
    {{end}}
    {{/*Unmute User*/}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{range $call}}
            {{if eq .UserID .User.ID}}
                {{$grab = (print $grab " " .Value)}}
            {{end}}
        {{end}}
        {{if (reFind `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{$matches := (reFindAllSubmatches `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{if eq (str .Reaction.MessageID) (str (index (index $matches 0) 1))}}
                {{deleteAllMessageReactions nil (str .Reaction.MessageID)}}
                {{addMessageReactions nil (str .Reaction.MessageID) "❌"}}
                {{editMessage nil (str .Reaction.MessageID) (cembed
                "author" (sdict
                    "name" (print $users "〢Mod Panel")
                    "icon_url" $usera)
                "description" (exec "unmute" $userid "Unmuted by Mod Panel")
                "color" 14495300)}}
            {{end}}
        {{end}}
    {{end}}
    {{/*Checking for time emojis*/}}
    {{$result := 0}}{{$mute := "0"}}{{$ban := "0"}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{$result = 1}}{{$mute = "10m"}}{{$ban = "-d 1d"}}
    {{end}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{$result = 1}}{{$mute = "1h"}}{{$ban = "-d 1w"}}
    {{end}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{$result = 1}}{{$mute = "1d"}}{{$ban = "-d 1mo"}}
    {{end}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{$result = 1}}{{$mute = "7d"}}{{$ban = "-d 12mo"}}
    {{end}}
    {{if eq .Reaction.Emoji.Name "?"}}
        {{$result = 1}}{{$mute = "0"}}{{$ban = "-d p"}}
    {{end}}
    {{if eq $result 1}}
        {{range $call}}
            {{if eq .UserID .User.ID}}
                {{$grab = (print $grab " " .Value)}}
            {{end}}
        {{end}}
        {{if (reFind `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{$matches := (reFindAllSubmatches `mod(?:(?P<MessageID>\d+)-(?P<ModUserID>\d+))` $grab)}}
            {{$author := (sdict "name" (print $users "〢Mod Panel") "icon_url" $usera)}}
            {{if eq (str .Reaction.MessageID) (str (index (index $matches 0) 1))}}
                {{if eq (str (dbGet .User.ID "modmenu").Value) "mute"}}
                    {{deleteAllMessageReactions nil (str .Reaction.MessageID)}}
                    {{addMessageReactions nil (str .Reaction.MessageID) "❌"}}
                    {{editMessage nil (str .Reaction.MessageID) (cembed
                    "author" $author
                    "description" (exec "mute" $userid $mute "Muted by Mod Panel")
                    "color" 14495300)}}
                {{end}}
                {{if eq (str (dbGet .User.ID "modmenu").Value) "ban"}}
                    {{deleteAllMessageReactions nil (str .Reaction.MessageID)}}
                    {{addMessageReactions nil (str .Reaction.MessageID) "❌"}}
                    {{editMessage nil (str .Reaction.MessageID) (cembed
                        "author" $author
                        "description" (exec "ban" $userid $ban "Banned by Mod Panel")
                        "color" 12458289)}}
                {{end}}
            {{end}}
        {{end}}
    {{end}}
{{end}}

باقی موارد رو تغییر ندید.

و بعد از اون روی گزینه Save کلیک کنید تا تغییرات ما اعمال بشه.

چیزی که داخل این کد تعریف شده کار کردن ریکشن ها، ادیت پنل (پیام امبد سند شده) جهت تغییر منو و انجام پانیش (میوت، کیک یا بن) های اصلیه.

خلاص!

کار ما تمومه.
حالا میتونید برید داخل سرورتون و ارسال کامندی که درست کردید از پنلتون استفاده کنید.

امیدوارم حسابی به دردتون خورده باشه =)

این مقاله به دوستاتون مخصوصا صاحبای سرور خفن بفرستید.
کامنتای خفن بذارید و حسابی انرژی بدید که همشونو میخونم ?

اگه حمایت بالا باشه کامند های جذاب تری هم از این بات براتون میذارم ?
اگه سوال یا پیشنهادی داشتید میتونید تو کامنتا یا سرور دیسکوردی گیم گیر با ما در میون بذارید.

من سینا علیاری هستم، شاد و پیروز باشید ✌

 

guest
6 نظرات
بازخورد (Feedback) های اینلاین
مشاهده تمام نظرات
s_the_bomber
s_the_bomber
5 ماه قبل

ممنون خیلی بهم کمک کرد

thsdr
thsdr
5 ماه قبل

خیلی مفید بود?

Hossein
Hossein
5 ماه قبل

نایسسسسسس
خسته نباشید