DiscordSRV არის Paper plugin, რომელიც Discord-ში ბოტად შედის და შენს სერვერს შენი საზოგადოების Discord-თან აკავშირებს: თამაშის ჩატი Discord-ის არხში ჩნდება და Discord-ის შეტყობინებები თამაშში, შესვლის, გასვლის, სიკვდილისა და მიღწევების შეტყობინებები ავტომატურად იგზავნება, კონსოლის არხს შეუძლია სერვერის ლოგის ჩვენება და ბრძანებების მიღება, ხოლო მოთამაშეებს შეუძლიათ თავიანთი Minecraft და Discord ანგარიშების დაკავშირება, რომ როლები რანგებს მისდევდეს. მოწყობას დაახლოებით თხუთმეტი წუთი სჭირდება: შექმენი ბოტი Discord-ის დეველოპერის პორტალში, ჩართე ორი პრივილეგირებული intent, მოიწვიე, ჩასვი token და არხების ID-ები config.yml-ში, გადატვირთე. ერთადერთი ნაწილი, რომელსაც სერიოზულად უნდა მოეკიდო, კონსოლის არხია, რადგან ყველა, ვისაც მასში წერა შეუძლია, ბრძანებებს სერვერის კონსოლის სახელით უშვებს.
რას აკეთებს DiscordSRV და რა არ არის#
DiscordSRV Minecraft სერვერის პროცესის შიგნით მუშაობს. ის არ არის ცალკე ბოტი, რომელსაც სადმე ჰოსტავ; ბოტის ანგარიში უბრალოდ მისი იდენტობაა Discord-ზე. როცა სერვერი გათიშულია, ბოტიც offline ხდება. ჩვეულებრივ სწორედ ეს გინდა - მისი არსებობა აჩვენებს, ჩართულია თუ არა სერვერი - მაგრამ ეს ასევე ნიშნავს, რომ DiscordSRV ვერ გამოაცხადებს, რომ სერვერი დაკრაშდა. სტატუსის შეტყობინებებისთვის, რომლებიც სერვერის გათიშვასაც გადაურჩება, იხილე Discord webhook-ები სერვერის სტატუსისთვის.
| ფუნქცია | სადაა კონფიგურირებული |
|---|---|
| ჩატის ხიდი თამაშსა და Discord-ს შორის | config.yml |
| ჩატის, შესვლების, სიკვდილების შეტყობინებების ფორმატი | messages.yml |
| კონსოლის არხი | config.yml |
| ანგარიშების დაკავშირება და წვდომა მხოლოდ დაკავშირებულებისთვის | linking.yml |
| როლებისა და ჯგუფების სინქრონიზაცია | synchronization.yml |
| საკუთარი შეტყობინებები მოვლენებზე | alerts.yml |
DiscordSRV Bukkit-ის ოჯახის სერვერებისთვისაა: Paper, Spigot, Purpur და მსგავსი. Fabric და NeoForge სერვერებს სხვა mod სჭირდებათ (რამდენიმე საზოგადოებრივი mod ჩატის ხიდს გთავაზობს); Velocity ქსელებისთვის proxy-ის დონის ხიდი ცალკე პროექტია. შეამოწმე, რა არსებობს შენი პლატფორმისა და ვერსიისთვის, ნაცვლად იმისა, რომ Paper plugin ძალით mod-იან სერვერზე დააყენო.
Discord ბოტის შექმნა#
- გახსენი Discord Developer Portal და შექმენი New Application. დაარქვი შენი სერვერის სახელი; ეს სახელი ის არის, რასაც მოთამაშეები ხედავენ.
- Bot სექციაში გადატვირთე და დააკოპირე token. ეს ბოტის პაროლია. მას ერთხელ დაინახავ; თუ დაკარგავ, ისევ გადატვირთე.
- იმავე გვერდზე ჩართე ორი Privileged Gateway Intent, რომელიც DiscordSRV-ს სჭირდება: Server Members Intent და Message Content Intent. Message Content-ის გარეშე ბოტი ვერ კითხულობს, რას წერს ხალხი Discord-ში, და ხიდი მხოლოდ ერთი მიმართულებით მუშაობს.
- OAuth2-ში გამოიყენე URL-ის გენერატორი: scope-ები
botდაapplications.commands, და ქვემოთ მოცემული უფლებები. გახსენი გენერირებული URL და ბოტი შენს Discord სერვერს დაამატე.
| უფლება | რისთვის სჭირდება |
|---|---|
| View Channels, Read Message History | დაკავშირებული არხების წასაკითხად |
| Send Messages, Embed Links, Attach Files | ჩატისა და მოვლენების გამოსაქვეყნებლად |
| Manage Webhooks | მოთამაშეების საკუთარი სახელითა და skin-ით საჩვენებლად |
| Manage Roles | როლების სინქრონიზაციისთვის |
| Manage Nicknames | ნიკნეიმების სინქრონიზაციისთვის |
მიეცი მხოლოდ ის, რასაც იყენებ. Administrator-ის მქონე ბოტი token-ის გაჟონვისას შენი Discord-ის სრული ხელში ჩაგდებაა, token კი თამაშის სერვერზე ჩვეულებრივ ტექსტურ ფაილში დევს.
Plugin-ის დაყენება და პირველი კონფიგურაცია#
ჩადე DiscordSRV-ის jar plugins/-ში, ერთხელ გაუშვი სერვერი, რომ plugins/DiscordSRV/ შეიქმნას, შემდეგ გააჩერე და დაარედაქტირე config.yml. გასაღებები, რომლებიც პირველი მოწყობისთვის მნიშვნელოვანია:
BotToken: "paste-the-bot-token-here"Channels: {"global": "112233445566778899"}DiscordConsoleChannelId: "998877665544332211"DiscordGameStatus: ["Minecraft"]Experiment_WebhookChatMessageDelivery: trueრას აკეთებს თითოეული:
- `BotToken` - token მე-2 ნაბიჯიდან.
- `Channels` - თამაშის ჩატის არხებს Discord-ის არხების ID-ებთან აკავშირებს.
globalთამაშის მთავარი ჩატია. Discord-ის პარამეტრებში ჩართე Developer Mode, შემდეგ არხზე მარჯვენა ღილაკით დააჭირე და აირჩიე Copy Channel ID. Plugin-ებს, რომლებსაც საკუთარი ჩატის არხები აქვთ (ჩატის plugin-ის ინტეგრაციით), აქ მეტი ჩანაწერის მიბმა შეუძლიათ. - `DiscordConsoleChannelId` - კონსოლის არხი, ქვემოთ განხილული. თუ არ გინდა, ნულების placeholder დატოვე.
- `Experiment_WebhookChatMessageDelivery` - თამაშის ჩატს webhook-ით აქვეყნებს, ისე რომ ყოველი შეტყობინება მოთამაშის სახელსა და skin-ის თავს აჩვენებს, ნაცვლად იმისა, რომ ყველაფერი ბოტისგან მოდიოდეს. გაცილებით უკეთ გამოიყურება, სჭირდება Manage Webhooks.
ნამდვილი ფაილი გრძელი და დაკომენტარებულია, ხოლო გასაღებების სახელები დროდადრო ვერსიებს შორის იცვლება. შეცვალე, რაც გჭირდება, დანარჩენი დატოვე. გადატვირთვის შემდეგ კონსოლში უნდა ჩანდეს, როგორ უკავშირდება DiscordSRV, ბოტი კი Discord-ში ონლაინ უნდა გამოჩნდეს.
შეტყობინებების ფორმატები messages.yml-შია: Minecraft ჩატის ფორმატი Discord-ში, Discord ჩატისა Minecraft-ში, შესვლისა და გასვლის შეტყობინებები, სიკვდილის შეტყობინებები, მიღწევები, სერვერის გაშვება და გაჩერება. ნაგულისხმევები გონივრულია. ყველაზე გავრცელებული ცვლილებაა Discord-იდან თამაშში მიმავალი შეტყობინებების შემოკლება, რომ თამაშის ჩატის ფანჯარაში არ გადაიტანოს.
ჩატის ხიდი: რა გადადის და რა არ უნდა გადავიდეს#
ნაგულისხმევად ყველაფერი, რაც global ჩატში ითქმის, Discord-ში ქვეყნდება, და ყველაფერი, რაც დაკავშირებულ Discord არხში ქვეყნდება, თამაშში ჩნდება. რამდენიმე რამ შეგნებულად უნდა გადაწყვიტო:
- Mention-ები. მოთამაშეებმა, რომლებიც თამაშში
@everyone-ს წერენ, მთელი შენი Discord არ უნდა აწრიალონ. DiscordSRV მასობრივ mention-ებს ნაგულისხმევად შლის ან ბლოკავს; ფორმატების შეცვლის შემდეგ შეამოწმე, რომ ისევ ასე აკეთებს. - Mute-ში მყოფი მოთამაშეები. თუ მოთამაშე თამაშში მოდერაციის plugin-ით mute-შია, მისი შეტყობინებები არც Discord-ს უნდა აღწევდეს. DiscordSRV პატივს სცემს ჩატის event-ის გაუქმებას, რასაც mute plugin-ების უმეტესობა აკეთებს; გამოსცადე.
- პირადი შეტყობინებები და სტაფის ჩატი საჯარო არხთან არ უნდა იყოს დაკავშირებული. ნაგულისხმევად არ არის, რადგან global ჩატი არ არის - მაგრამ ჩატის plugin-ის ინტეგრაციას შეუძლია მათი მიბმა, ამიტომ ასეთის დამატებისას
Channelsშეამოწმე. - მხოლოდ Discord-ის მომხმარებლები. ადამიანებს, რომლებიც შენს Discord-ში არიან, მაგრამ სერვერზე არა, ახლა თამაშში მოთამაშეებთან საუბარი შეუძლიათ. ხშირად სწორედ ესაა აზრი; ეს ასევე მოდერაციის ზედაპირია. შენი Discord-ის მოდერაცია ახლა თამაშის ჩატზეც ვრცელდება.
- სიხშირე. დატვირთული სერვერის ჩატი, რომელიც Discord-ში თითო შეტყობინებით ქვეყნდება, Discord-ის rate limit-ებს შეიძლება მიაწყდეს. DiscordSRV რიგში აყენებს და ხელახლა ცდის, მაგრამ ძალიან დატვირთულ სერვერებზე განიხილე, რომ საჯარო არხთან მხოლოდ შესვლები, სიკვდილები და განცხადებები დააკავშირო, სრული ჩატი კი ცალკე არხში შეინახო. Rate limit-ები და 429-ები webhook-ების პოსტშია ახსნილი.
კონსოლის არხი, უსაფრთხოდ#
კონსოლის არხი სერვერის ლოგს Discord-ის არხში აქვეყნებს და იქ აკრეფილ ყველაფერს კონსოლის ბრძანებად უშვებს. ტელეფონებიდან მომუშავე სტაფისთვის ძალიან მოსახერხებელია. ეს ასევე plugin-ის ყველაზე საშიში ფუნქციაა.
თუ მაინც აწყობ:
- არხი ჩაკეტე. კერძო არხი, რომელიც მხოლოდ იმ როლისთვისაა ხილული, რომელიც მხოლოდ მფლობელებს აქვთ. შეამოწმე არხის უფლებების override-ები და არა მხოლოდ როლისა - Discord-ის უფლებები შეიძლება თითო არხზე გაიცეს.
- გამოიყენე ბრძანებების blacklist. DiscordSRV-ს აქვს პარამეტრები კონსოლის არხიდან ბრძანებების დასაბლოკად, ან სიის whitelist-ად გადასაქცევად, რომ მხოლოდ ჩამოთვლილი ბრძანებები გაეშვას. რამდენიმე უსაფრთხო ბრძანების whitelist (
list,tps,say,kick) გაცილებით უსაფრთხოა, ვიდრე საშიშების blacklist. - გახსოვდეს, რომ ლოგი საიდუმლოებებს შეიცავს. მოთამაშეების IP მისამართები შესვლის ხაზებში ჩანს, plugin-ები ზოგჯერ token-ებსა და პაროლებს ლოგავენ. კონსოლის არხი ამ ყველაფერს Discord-ში აკოპირებს, სადაც სამუდამოდ ინახება და მოძებნადია.
- განიხილე, რომ საერთოდ არ გქონდეს. თუ შენს სტაფს უკვე აქვს პანელზე წვდომა, პანელის კონსოლი იგივე საქმეს აკეთებს თითო მომხმარებლის უფლებებითა და აქტივობის ლოგით. RE:NODE-ზე subuser-ებს შეიძლება კონსოლზე წვდომა მიეცეთ ფაილებსა და ბილინგზე წვდომის გარეშე, და პანელი იწერს, ვინ რა გააკეთა - სტაფისთვის კონსოლის მიცემის უფრო ანგარიშვალდებული გზა, ვიდრე საერთო Discord არხი. Subuser-ები და მინიმალური პრივილეგია ხსნის, როგორ შემოფარგლო ეს წვდომა.
ანგარიშების დაკავშირება#
დაკავშირება Minecraft-ის ანგარიშს (UUID) Discord-ის ანგარიშთან აკავშირებს. ეს რთავს როლების სინქრონიზაციას, ნიკნეიმების სინქრონიზაციას და თამაშისთვის დაკავშირებული ანგარიშის მოთხოვნას.
ნაგულისხმევი პროცესი:
- მოთამაშე თამაშში წერს
/discord link. - DiscordSRV ოთხნიშნა კოდს აჩვენებს.
- მოთამაშე ამ კოდს ბოტს პირად შეტყობინებაში უგზავნის.
- ანგარიშები დაკავშირებულია.
/discord linkedთამაშში კავშირს აჩვენებს.
კავშირებს DiscordSRV ინახავს, საკუთარ ფაილებში ან ბაზაში, თუ ასეა კონფიგურირებული. ადმინებს ანგარიშების დაკავშირება და გათიშვა ბრძანებით შეუძლიათ; /discord არგუმენტების გარეშე შენთვის ხელმისაწვდომ ქვებრძანებებს ჩამოთვლის.
დაკავშირებული ანგარიშის მოთხოვნა შესვლისთვის
linking.yml შეიცავს ოფციას, რომელიც უარს ეუბნება მოთამაშეებს, რომლებსაც არ დაუკავშირებიათ, და აგდებს მათ შეტყობინებით, რომელიც მათ კოდს შეიცავს. Discord-ის საკუთარ ვერიფიკაციასთან ერთად (ტელეფონით ან ელფოსტით დადასტურებული ანგარიშები, წევრების შემოწმების ნაბიჯი) ეს შენს Discord-ს სერვერის კარიბჭედ აქცევს: სათამაშოდ Discord-ში უნდა იყო და მისი შემოწმებები უნდა გაიარო. გვერდით მყოფი პარამეტრები Discord სერვერის წევრობისა და კონკრეტული როლების მოთხოვნის საშუალებას გაძლევს.
ეს whitelist-ის გონივრული შემცვლელია საზოგადოებისთვის, რომელიც Discord-ზე ცხოვრობს, და ბარიერი ყველა დანარჩენისთვის. ეს ასევე ნიშნავს, რომ თუ ბოტი Discord-ს ვერ მიწვდება, ვერავინ ახალი ვერ დააკავშირებს და ვერ შევა - ამიტომ დარწმუნდი, რომ სტაფი და არსებული whitelist მუშაობს, თუ Discord-ს გათიშვა ექნება.
როლებისა და ჯგუფების სინქრონიზაცია#
როცა Vault და უფლებების plugin (LuckPerms) დაყენებულია, DiscordSRV-ს შეუძლია დაკავშირებული მოთამაშეებისთვის უფლებების ჯგუფებისა და Discord-ის როლების სინქრონიზაცია. შესაბამისობა synchronization.yml-შია:
GroupRoleSynchronizationGroupsAndRolesToSync: "vip": "223344556677889900" "moderator": "334455667788990011"GroupRoleSynchronizationMinecraftIsAuthoritative: trueმარცხნივ ჯგუფების სახელები LuckPerms-ის ჯგუფებია; რიცხვები Discord-ის როლების ID-ებია (დააკოპირე ისე, როგორც არხების ID-ები). მიმართულების პარამეტრი წყვეტს, რომელი მხარე იგებს, როცა ისინი ერთმანეთს არ ემთხვევა:
- Minecraft ავტორიტეტულია - იყიდე VIP თამაშში, მიიღე VIP როლი Discord-ში. ჩვეულებრივი არჩევანი, როცა რანგები მაღაზიიდან ან პროგრესიდან მოდის.
- Discord ავტორიტეტულია - მიეცი ვინმეს Moderator როლი Discord-ში და ის თამაშში moderator ჯგუფს მიიღებს. მოსახერხებელია და სარისკო: ყველას, ვისაც Discord-ის როლების მინიჭება შეუძლია, ახლა თამაშის უფლებების მიცემაც შეუძლია.
Discord-იდან თამაშის მიმართულებით მხოლოდ კოსმეტიკური ან საზოგადოებრივი როლები დაასინქრონე. ნამდვილი ძალის მქონე ჯგუფი - მოდერაცია, ადმინი, * - Discord-იდან თამაშში არასოდეს დაასინქრონო. მაშინ Discord-ის მოდერატორის გატეხილი ანგარიში გატეხილი სერვერი ხდება. ნდობის ორი დამოუკიდებელი სისტემა უფრო უსაფრთხოა, ვიდრე ერთი, მეორეზე მიჯაჭვული. LuckPerms ამ ჯგუფების შექმნას განიხილავს.
ბოტის საკუთარი უმაღლესი როლი Discord-ის როლების სიაში ყველა იმ როლზე მაღლა უნდა იყოს, რომელსაც მართავს, თორემ როლების ცვლილებები ჩუმად ჩავარდება.
წარმადობა და ჩავარდნის სცენარები#
DiscordSRV თავის Discord სამუშაოს მთავარი thread-ის გარეთ აკეთებს, ამიტომ კარგად კონფიგურირებული ინსტანსი TPS-ზე არ მოქმედებს. რაც მაინც შეიძლება გაფუჭდეს:
ბოტი ონლაინ არ გამოდის. არასწორი ან გაუქმებული token, ან პრივილეგირებული intent-ები არ არის ჩართული. გაშვებისას კონსოლის შეცდომა ამბობს, რომელი.
შეტყობინებები თამაშიდან Discord-ში გადის, მაგრამ უკან არა. Message Content Intent გამორთულია, ან ბოტი არხს ვერ ხედავს. ორივე შეამოწმე.
მოთამაშეები ბოტის სახელით ჩანან საკუთარის ნაცვლად. Webhook-ით მიწოდება გამორთულია, ან ბოტს ამ არხში Manage Webhooks აკლია.
როლების სინქრონიზაცია არაფერს აკეთებს. ბოტის როლი იმ როლებზე დაბლაა, რომლებსაც მართავს, მოთამაშე არ არის დაკავშირებული, ან Vault უფლებების plugin-ს ვერ ხედავს. /discord debug დიაგნოსტიკურ report-ს ატვირთავს, რომელიც ყველა ამას აჩვენებს; ის token-ს მალავს, მაგრამ გაზიარებამდე მაინც წაიკითხე.
Token გაჟონა. დეველოპერის პორტალში დაუყოვნებლივ გადატვირთე - ძველი აღარ იმუშავებს - და განაახლე config.yml. შემდეგ შენი Discord-ის audit log შეამოწმე ყველაფრისთვის, რაც ბოტმა გააკეთა და შენ არა. მოეპყარი ისე, როგორც აღწერილია სტატიაში გარემოს ცვლადები და საიდუმლოებები: token პაროლია, კონფიგურაციის ფაილები კი support-ის ჩატებში იმაზე ხშირად ზიარდება, ვიდრე ვინმე აღიარებს.
ბოტი თამაშის სერვერის შიგნით მუშაობს, ამიტომ საკუთარ ჰოსტინგს არ საჭიროებს. თუ მას გაიზრდები - საკუთარი ბრძანებები, ticket-ები, მოდერაციის ინსტრუმენტები - დამოუკიდებელი ბოტი ცალკე პროგრამაა; Discord ბოტის 24/7 ჰოსტინგი ამ გზას განიხილავს.
FAQ#
DiscordSRV ბოტის სადმე ჰოსტინგი მჭირდება?
არა. ის Minecraft სერვერის შიგნით მუშაობს, ამიტომ ონლაინაა ყოველთვის, როცა სერვერია. Discord-ის დეველოპერის პორტალში ბოტის ანგარიშს მხოლოდ token-ის მისაღებად ქმნი.
რატომ ვერ კითხულობს ბოტი შეტყობინებებს Discord-იდან?
დეველოპერის პორტალში Message Content Intent არ არის ჩართული, ან ბოტს ამ არხში View Channels ან Read Message History აკლია. ჩართე intent, შეამოწმე არხის უფლებები და გადატვირთე სერვერი.
შეუძლია DiscordSRV-ს proxy ქსელში მუშაობა?
თითოეულ backend-ს შეუძლია საკუთარი DiscordSRV გაუშვას იმავე ბოტის token-ითა და არხებით, რაც ყველა სერვერის ჩატს ერთ არხში აერთიანებს. დარწმუნდი, რომ კონსოლის არხს მხოლოდ ერთი მათგანი უშვებს, თორემ ბრძანებები არასწორ სერვერზე შესრულდება.
უსაფრთხოა კონსოლის არხი?
მხოლოდ მაშინ, თუ მასზე წვდომა ისევე მკაცრად არის შეზღუდული, როგორც პანელზე. ყველას, ვისაც იქ წერა შეუძლია, ნებისმიერი კონსოლის ბრძანების გაშვება შეუძლია. ბრძანებების whitelist ზიანს ამცირებს; ყველაზე უსაფრთხოა, რომ საერთოდ არ გქონდეს.
შემიძლია მოვთხოვო მოთამაშეებს Discord-ის დაკავშირება შესვლამდე?
დიახ, linking.yml-ში დაკავშირებული ანგარიშის მოთხოვნით. დაუკავშირებელ მოთამაშეებს აგდებს მათი დაკავშირების კოდით, რომელსაც ბოტს უგზავნიან. სტაფისთვის შესასვლელი გზა შეინარჩუნე, თუ Discord ან ბოტი გათიშულია.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.