Cara cepat menghapus pesan dalam perselisihan. Bot Perselisihan Terbaik

  • Terjemahan

Perselisihan terus tumbuh lebih cepat dari yang kami harapkan, seperti halnya konten yang dibuat pengguna. Semakin banyak pengguna - semakin banyak pesan dalam obrolan. Pada bulan Juli kami mengumumkan 40 juta pesan per hari, pada bulan Desember kami mengumumkan 100 juta pesan, dan pada pertengahan Januari kami melewati 120 juta. Kami segera memutuskan untuk menyimpan riwayat obrolan selamanya, sehingga pengguna dapat kembali kapan saja dan mengakses data mereka dari perangkat apa pun. Ini data yang banyak, yang aliran dan volumenya terus bertambah, dan semuanya harus tersedia. Bagaimana kita melakukannya? Kasandra!

Apa yang telah kita lakukan

Versi asli Discord ditulis dalam waktu kurang dari dua bulan pada awal 2015. Mungkin salah satu database terbaik untuk iterasi cepat adalah MongoDB. Segala sesuatu di Discord secara khusus disimpan dalam satu set replika MongoDB, tetapi kami juga mempersiapkan segalanya untuk migrasi sederhana ke DBMS baru (kami tahu bahwa kami tidak akan menggunakan sharding MongoDB karena kerumitannya dan stabilitasnya yang tidak diketahui). Faktanya, ini adalah bagian dari budaya perusahaan kami: berkembang dengan cepat untuk mengalami fitur baru produk, tetapi selalu menuju solusi yang lebih andal.

Pesan disimpan dalam koleksi MongoDB dengan indeks komposit tunggal pada channel_id dan Created_at . Sekitar November 2015, kami mencapai tonggak 100 juta pesan dalam database, dan kemudian kami mulai memahami masalah yang menunggu kami: data dan indeks tidak lagi muat di RAM, dan penundaan menjadi tidak dapat diprediksi. Saatnya bermigrasi ke DBMS yang lebih sesuai.

Memilih DBMS yang tepat

Sebelum memilih DBMS baru, kami perlu memahami pola baca/tulis yang tersedia dan mengapa ada masalah dengan solusi saat ini.
  • Dengan cepat menjadi jelas bahwa pembacaan sangat acak, dan rasio baca/tulis sekitar 50/50.
  • Server obrolan suara berat Discord hampir tidak mengirim pesan. Artinya, mereka mengirim satu atau dua pesan setiap beberapa hari. Dalam setahun, server jenis ini tidak mungkin mencapai tonggak 1000 pesan. Masalahnya adalah bahkan dengan sejumlah kecil pesan, data ini lebih sulit untuk dikirim ke pengguna. Cukup dengan mengembalikan 50 pesan ke pengguna dapat menghasilkan banyak pencarian disk secara acak, yang menghasilkan pembersihan cache disk.
  • Server obrolan teks pribadi Discord kelas berat mengirim jumlah pesan yang layak, dengan mudah jatuh ke dalam kisaran antara 100 ribu dan 1 juta pesan per tahun. Mereka biasanya hanya meminta data terbaru. Masalahnya adalah server ini biasanya memiliki kurang dari 100 anggota, sehingga tingkat permintaan data lambat dan tidak mungkin berada di cache disk.
  • Server Discord publik yang besar mengirim banyak pesan. Ada ribuan anggota yang mengirim ribuan pesan setiap hari. Jutaan pesan dalam setahun dapat diketik dengan mudah. Mereka hampir selalu meminta pesan yang dikirim dalam satu jam terakhir, dan ini sering terjadi. Oleh karena itu, data biasanya ada di cache disk.
  • Kami tahu bahwa di tahun mendatang, pengguna akan memiliki lebih banyak cara untuk menghasilkan pembacaan acak: kemampuan untuk melihat sebutan mereka dalam 30 hari terakhir dan kemudian melompat ke momen itu dalam riwayat, melihat dan membuka postingan tetap, dan pencarian teks lengkap. Semua ini berarti lebih banyak bacaan acak!
Kami kemudian mendefinisikan persyaratan kami:
  • Skalabilitas linier- Kami tidak ingin merevisi keputusan nanti atau memindahkan data secara manual ke shard lain.
  • Kegagalan otomatis- Kami suka tidur di malam hari dan menjadikan Discord sebagai penyembuhan diri mungkin.
  • Sedikit dukungan- Ini akan berfungsi segera setelah kami menginstalnya. Kami hanya perlu menambahkan lebih banyak node seiring bertambahnya data.
  • Terbukti di Tempat Kerja Kami senang mencoba teknologi baru, tetapi tidak terlalu baru.
  • Performa yang dapat diprediksi- Pesan dikirim kepada kami jika waktu respons API melebihi 80 ms dalam 95% kasus. Kami juga tidak ingin menghadapi kebutuhan untuk menyimpan pesan di Redis atau Memcached.
  • Bukan penyimpanan gumpalan- Menulis ribuan pesan per detik tidak akan berfungsi dengan baik jika kita harus terus-menerus menghapus deserialisasi gumpalan dan melampirkan data ke dalamnya.
  • sumber terbuka- Kami percaya bahwa kami mengendalikan nasib kami sendiri, dan tidak ingin bergantung pada perusahaan pihak ketiga.
Cassandra ternyata menjadi satu-satunya DBMS yang memenuhi semua persyaratan kami. Kami hanya dapat menambahkan node saat scaling, dan menangani hilangnya node tanpa dampak pada aplikasi. Perusahaan besar seperti Netflix dan Apple memiliki ribuan node Cassandra. Data terkait disimpan berdampingan pada disk, memastikan pencarian minimum dan distribusi yang mudah di seluruh cluster. Itu dikelola oleh DataStax, tetapi didistribusikan secara terbuka. Kode sumber dan kekuatan masyarakat.

Setelah membuat pilihan, perlu untuk membuktikan bahwa dia benar-benar dibenarkan.

Pemodelan Data

Cara terbaik untuk mendeskripsikan Cassandra kepada seorang pemula adalah akronim KKV. Dua huruf "K" berisi kunci utama. "K" pertama adalah kunci partisi. Ini membantu untuk menentukan di simpul mana data itu hidup dan di mana menemukannya di disk. Ada banyak baris di dalam bagian, dan baris tertentu di dalam bagian ditentukan oleh "K" kedua - kunci pengelompokan. Ini bertindak sebagai kunci utama dalam partisi dan menentukan bagaimana baris diurutkan. Anda dapat menganggap bagian sebagai kamus berurutan. Semua kualitas ini digabungkan memungkinkan pemodelan data yang sangat kuat.

Ingat bahwa pesan di MongoDB diindeks menggunakan channel_id dan Created_at ? channel_id telah menjadi kunci bagian karena semua pesan berfungsi di saluran, tetapi create_at tidak kunci yang bagus pengelompokan karena dua pesan dapat dihasilkan pada saat yang sama. Untungnya, setiap ID di Discord sebenarnya dibuat di Snowflake, artinya diurutkan secara kronologis. Jadi mereka bisa digunakan. Kunci utama telah menjadi (channel_id, message_id) di mana message_id adalah Snowflake. Ini berarti bahwa ketika saluran dimuat, kami dapat memberi tahu Cassandra kisaran yang tepat di mana mencari pesan.

Berikut adalah skema sederhana untuk tabel pesan kami (melewati sekitar 10 kolom).

CREATE TABLE pesan (channel_id bigint, message_id bigint, author_id bigint, teks konten, PRIMARY KEY (channel_id, message_id)) WITH CLUSTERING ORDER BY (message_id DESC);
Sementara skema Cassandra mirip dengan skema database relasional, mereka mudah diubah tanpa dampak kinerja sementara. Kami telah mengambil yang terbaik dari penyimpanan blob dan penyimpanan relasional.

Segera setelah impor pesan yang ada ke Cassandra dimulai, kami segera melihat peringatan di log bahwa partisi yang lebih besar dari 100 MB ditemukan. Yah?! Lagi pula, Cassandra mengklaim mendukung partisi 2 GB! Rupanya, kemungkinan itu sendiri tidak berarti bahwa ini harus dilakukan. Partisi besar membebani pengumpul sampah di Cassandra saat memadatkan, memperluas cluster, dll. Memiliki partisi yang besar juga berarti data di dalamnya tidak dapat didistribusikan ke seluruh cluster. Menjadi jelas bahwa kami entah bagaimana harus membatasi ukuran partisi, karena beberapa saluran Discord dapat ada selama bertahun-tahun dan terus bertambah ukurannya.

Kami memutuskan untuk mendistribusikan pesan kami dalam blok (ember) berdasarkan waktu. Kami melihat saluran terbesar di Discord dan memutuskan bahwa jika kami menyimpan pesan dalam blok sekitar 10 hari, kami akan dengan nyaman masuk ke dalam batas 100 MB. Blok harus diperoleh dari message_id atau timestamp.

DISCORD_EPOCH = 1420070400000 BUCKET_SIZE = 1000 * 60 * 60 * 24 * 10 def make_bucket(snowflake): jika snowflake adalah None: timestamp = int(time.time() * 1000) - DISCORD_EPOCH else: # Ketika Snowflake dibuat, ia berisi jumlah # detik sejak DISCORD_EPOCH. timestamp = snowflake_id >> 22 return int(timestamp / BUCKET_SIZE) def make_buckets(start_id, end_id=None): return range(make_bucket(start_id), make_bucket(end_id) + 1)
Kunci partisi Cassandra dapat digabungkan, jadi kunci utama baru kami adalah ((channel_id, bucket), message_id) .

CREATE TABLE pesan (channel_id bigint, bucket int, message_id bigint, author_id bigint, teks konten, PRIMARY KEY ((channel_id, bucket), message_id)) WITH CLUSTERING ORDER BY (message_id DESC);
Untuk menanyakan pesan terbaru di saluran, kami membuat rentang blok dari waktu saat ini ke channel_id (ini juga diurutkan secara kronologis seperti Snowflake dan harus lebih lama dari pesan pertama). Kami kemudian melakukan polling partisi secara berurutan sampai kami mengumpulkan cukup banyak pesan. sisi belakang metode seperti itu adalah bahwa kadang-kadang, instance Discord yang aktif harus melakukan polling banyak blok berbeda untuk mengumpulkan cukup banyak pesan dari waktu ke waktu. Dalam praktiknya, ternyata semuanya beres, karena untuk instance Discord yang aktif biasanya ada cukup banyak pesan di bagian pertama, dan kebanyakan dari mereka.

Impor pesan ke Cassandra berjalan lancar dan kami siap untuk mencobanya di produksi.

Peluncuran berat

keluaran sistem baru produksi selalu menakutkan, jadi sebaiknya Anda mengujinya tanpa memengaruhi pengguna. Kami mengonfigurasi sistem untuk menduplikasi operasi baca/tulis di MongoDB dan Cassandra.

Segera setelah peluncuran, pelacak bug menunjukkan kesalahan bahwa author_id adalah nol. Bagaimana bisa nol? Ini adalah kolom yang harus diisi!

Konsistensi pada akhirnya

Cassandra adalah sistem tipe, yaitu, integritas terjamin dikorbankan di sini untuk aksesibilitas, yang secara umum kami inginkan. Cassandra tidak menganjurkan membaca sebelum menulis (operasi baca lebih mahal) sehingga yang dilakukan Cassandra hanyalah pembaruan dan peningkatan, meskipun hanya kolom tertentu yang disediakan. Anda juga dapat menulis ke simpul mana pun dan itu akan secara otomatis menyelesaikan konflik menggunakan semantik "penulisan terakhir menang" per kolom. Jadi bagaimana ini mempengaruhi kita?


Contoh kondisi balapan edit/hapus

Jika pengguna mengedit posting sementara pengguna lain menghapus posting yang sama, kami akan berakhir dengan baris dengan data yang benar-benar hilang, kecuali untuk kunci utama dan teks, karena Cassandra hanya mencatat pembaruan dan sisipan. Ada dua kemungkinan solusi untuk masalah ini:

  1. Tulis kembali seluruh pesan saat mengedit pesan. Lalu ada kemungkinan kebangkitan pesan yang dihapus dan menambahkan kemungkinan konflik untuk entri bersamaan di kolom lain.
  2. Identifikasi pesan yang rusak dan hapus dari database.
Kami memilih opsi kedua dengan menentukan kolom yang diperlukan (dalam hal ini author_id) dan menghapus postingan jika kosong.

Saat memecahkan masalah ini, kami melihat bahwa kami cukup tidak efisien dengan operasi tulis. Karena Cassandra pada akhirnya konsisten, tidak bisa langsung menghapus datanya begitu saja. Perlu mereplikasi penghapusan ke node lain, dan ini harus dilakukan bahkan jika node sementara tidak tersedia. Cassandra menangani ini dengan menyamakan penghapusan dengan bentuk catatan aneh yang disebut "batu nisan". Selama operasi membaca, itu hanya melompati "batu nisan" yang ditemui di sepanjang jalan. Masa pakai "batu nisan" dapat dikonfigurasi (secara default, 10 hari), dan mereka dihapus secara permanen selama pemadatan pangkalan, jika jangka waktunya telah berakhir.

Menghapus kolom dan menulis nol ke kolom adalah hal yang persis sama. Dalam kedua kasus, "nisan" dibuat. Karena semua penulisan di Cassandra adalah pembaruan dan sisipan, Anda membuat batu nisan bahkan jika Anda menulis nol pada awalnya. Dalam praktiknya, tata letak pesan lengkap kami terdiri dari 16 kolom, tetapi pesan rata-rata hanya memiliki 4 nilai yang ditetapkan. Kami mencatat 12 nisan di Cassandra, biasanya tanpa alasan. Solusi untuk masalahnya sederhana: tulis hanya nilai bukan nol ke database.

Pertunjukan

Cassandra dikenal lebih cepat dalam menulis daripada membaca, dan inilah yang kami amati. Operasi tulis terjadi dalam interval kurang dari satu milidetik, dan operasi baca - kurang dari 5 milidetik. Tingkat ini diamati terlepas dari jenis data yang diakses. Kinerja tetap tidak berubah sepanjang minggu pengujian. Tidak mengherankan, kami mendapatkan persis apa yang kami harapkan.


Penundaan baca / tulis, sesuai dengan data dari log

Sesuai dengan kinerja membaca yang cepat dan andal, berikut adalah contoh melompat ke pesan lama di saluran dengan jutaan pesan:

kejutan besar

Semuanya berjalan lancar, jadi kami meluncurkan Cassandra sebagai basis data utama kami dan menghentikan layanan MongoDB dalam waktu seminggu. Dia terus bekerja dengan sempurna ... selama sekitar 6 bulan, sampai suatu hari dia berhenti merespons.

Kami memperhatikan bahwa Cassandra akan berhenti terus menerus selama 10 detik selama pengumpulan sampah, tetapi kami tidak dapat mengetahui alasannya. Kami mulai menggali dan menemukan saluran Discord yang membutuhkan waktu 20 detik untuk dimuat. Pelakunya adalah server Discord publik dari subreddit Puzzles & Dragons. Karena bersifat publik, kami ikut menonton. Yang mengejutkan kami, hanya ada satu pesan di saluran tersebut. Pada saat itu, menjadi jelas bahwa mereka telah menghapus jutaan pesan melalui API kami, hanya menyisakan satu pesan per saluran.

Jika Anda telah membaca dengan seksama, ingat bagaimana Cassandra menangani penghapusan menggunakan "batu nisan" (disebutkan dalam bab "Konsistensi Akhir"). Ketika pengguna memuat saluran ini, meskipun hanya ada satu pesan, Cassandra harus memindai jutaan pesan secara efisien. Kemudian itu menghasilkan sampah lebih cepat daripada yang dapat dikumpulkan oleh JVM.

Kami memecahkan masalah ini dengan cara berikut:

  • Mengurangi umur batu nisan dari 10 hari menjadi 2 hari karena kami menjalankan perbaikan Cassandra (proses anti-entropi) setiap malam di cluster pesan kami.
  • Mengubah kode permintaan untuk melacak blok kosong di saluran dan menghindarinya di masa mendatang. Ini berarti bahwa jika pengguna memulai permintaan ini lagi, maka dalam kasus terburuk, Cassandra hanya akan memindai blok terakhir.

Masa depan

PADA saat ini kami memiliki 12 cluster node yang berjalan dengan faktor rep 3 dan akan terus menambahkan lebih banyak node Cassandra sesuai kebutuhan. Kami percaya pendekatan ini bekerja dalam jangka panjang, tetapi seiring Discord tumbuh, sepertinya masa depan yang jauh di mana kami harus menyimpan miliaran pesan sehari. Netflix dan Apple menjalankan cluster dengan ratusan node, jadi untuk saat ini kami tidak perlu khawatir. Namun, saya ingin memiliki beberapa ide sebagai cadangan.

Waktu dekat

  • Tingkatkan klaster pesan kami dari Cassandra 2 ke Cassandra 3. Format penyimpanan baru di Cassandra 3 dapat mengurangi penyimpanan hingga lebih dari 50%.
  • Versi Cassandra yang lebih baru lebih baik dalam menangani lebih banyak data di setiap node. Saat ini kami menyimpan sekitar 1 TB data terkompresi di masing-masingnya. Kami pikir aman untuk mengurangi jumlah node dalam cluster dengan meningkatkan batas ini menjadi 2 TB.

masa depan yang jauh

  • Learn Scylla adalah DBMS yang kompatibel dengan Cassandra yang ditulis dalam C++. PADA operasi normal Node Cassandra kami sebenarnya menggunakan sedikit CPU, namun, selama jam tidak sibuk selama perbaikan Cassandra (proses anti-entropi) mereka cukup bergantung pada CPU, dan waktu perbaikan meningkat tergantung pada jumlah data yang ditulis sejak perbaikan terakhir. Scylla berjanji untuk meningkatkan kecepatan perbaikan secara signifikan.
  • Buat sistem untuk mengarsipkan feed yang tidak digunakan ke Google Cloud Storage dan menguploadnya kembali sesuai permintaan. Kami ingin menghindarinya dan kami tidak berpikir kami harus melakukannya.

Kesimpulan

Lebih dari setahun telah berlalu sejak transisi ke Cassandra, dan meskipun "kejutan besar" itu adalah berenang yang tenang. Kami telah beralih dari lebih dari 100 juta total pesan menjadi lebih dari 120 juta pesan per hari sambil mempertahankan kinerja dan stabilitas.

Karena keberhasilan proyek ini, kami telah memigrasikan semua data kami yang lain dalam produksi ke Cassandra, dengan sukses juga.

Dalam kelanjutan artikel ini, kami akan mengeksplorasi bagaimana kami melakukan pencarian teks lengkap pada miliaran pesan.

Kami masih belum memiliki insinyur DevOps khusus (hanya empat insinyur backend), jadi sangat keren memiliki sistem yang tidak perlu Anda khawatirkan. Kami sedang merekrut, jadi hubungi jika teka-teki ini menggelitik kesukaan Anda.

Tag: Tambahkan tag

Seringkali, pengguna obrolan teks memiliki keinginan untuk menghapus semua korespondensi lama, karena telah kehilangan relevansinya dan memakan ruang ekstra. Sementara itu, upaya untuk melakukan ini melalui antarmuka perangkat lunak tidak mengizinkan hal ini. Bagaimana berada dalam situasi ini, dan apakah mungkin untuk melakukan pembersihan?

Konsep obrolan

Obrolan di Discord mengacu pada saluran individu. Mereka, pada gilirannya, menurut jenis metode komunikasi yang digunakan, dibagi menjadi suara dan teks.

Sebagai elemen dasar bekerja di Discord adalah server yang dibuat oleh pengguna. Setelah itu, ia sudah memiliki kemampuan untuk membuat jumlah saluran yang tidak terbatas dari kedua jenis.

Menghapus Obrolan di Discord

Harus segera dikatakan bahwa aplikasi tidak memberi pengguna alat untuk langsung menghapus semua pesan yang terkumpul di saluran. Penghapusan hanya dimungkinkan untuk entri individu (pesan). Namun, ada satu cara untuk mempercepat proses pembersihan. Kita berbicara tentang istilah seperti "reaksi", yaitu, respons peserta lain dalam percakapan terhadap pesan yang diposting.

Untuk menghapus semua reaksi yang tersedia dalam obrolan, prosedur berikut disediakan:

  • Masuk ke program Perselisihan;
  • Pilih saluran yang diminati;
  • Di sisi kanan pesan yang dipilih, klik ikon "titik dua";
  • Pilih "Hapus Semua Reaksi" dari menu tarik-turun.

Tentu saja, dengan cara ini tidak mungkin untuk membersihkan semua pesan dengan satu klik, tetapi ini akan secara signifikan mengurangi waktu yang diperlukan untuk melakukan. pembersihan lengkap. Pesan itu sendiri harus dihapus secara manual satu per satu.

Ini membutuhkan:

  • Masuk ke aplikasi;
  • Pilih saluran yang diminati;
  • Di seberang setiap pesan, klik ikon "titik dua";
  • Pilih opsi "Hapus" dari menu tarik-turun.

Anda juga dapat menghapusnya dengan menyorot teks pesan dengan tombol kanan dan kemudian mengklik opsi tindakan yang diusulkan "Hapus".

Jika kebutuhan akan saluran menghilang, itu dapat dengan mudah dihapus, dan ini hanya memerlukan beberapa penekanan tombol. Ini membutuhkan serangkaian langkah berikut:

  • Masuk ke aplikasi;
  • Pilih saluran yang diminati;
  • Buka bagian "Menu" atau klik kanan;
  • Dari daftar tindakan yang diusulkan, pilih opsi "Hapus saluran".

Dengan demikian, dimungkinkan untuk menghapus saluran itu sendiri dan catatan di dalamnya. Biarkan prosedur terakhir membutuhkan kerugian waktu tertentu.

Tentang program itu sendiri

Program Discord dirancang untuk mengatur komunikasi suara pemain game online. Tentu saja, layanan ini juga menawarkan kemampuan komunikasi teks standar, tetapi harus diakui bahwa dalam hal level Kegunaan saluran teks aplikasi lebih rendah daripada messenger. Harus diakui bahwa proyek Discord terutama ditujukan untuk audiens game.

Setelah membuat server Discord Anda sendiri, banyak pemula mungkin memiliki berbagai pertanyaan tentang administrasi server. Salah satu pertanyaan ini mungkin "Bagaimana cara menghapus semua pesan di Discord?". Pertanyaan ini dapat diajukan karena berbagai alasan: mulai dari menghapus satu pesan yang tidak perlu hingga membersihkan seluruh basis data dari pengintaian.

Hapus percakapan di Discord

Sayangnya, pengembang tidak memberikan kemungkinan cara menghapus semua pesan di Discord sekaligus. Tapi jangan marah! Ada banyak metode untuk menghindari sebagian larangan ini.

Metode 1: Hapus percakapan dengan satu pesan

Metode ini hanya cocok jika Anda perlu menghapus korespondensi hanya sebagian. Sebagai opsi pembersihan skala besar, metode ini adalah yang terburuk, karena membutuhkan biaya tindakan berulang berkali-kali.


Metode 2: Hapus semua pesan di Discord dengan menghapus obrolan

Hapus korespondensi dengan metode ini dapat dilakukan dengan cukup cepat. Satu-satunya negatif adalah Anda harus membuat ulang saluran dan membuat pengaturannya. Keuntungan utama - memungkinkan Anda untuk menghapus semua pesan di Discord yang disimpan di saluran yang dipilih.


Ingatlah bahwa Discord secara resmi tidak mengenali konsep seperti grup atau obrolan. Mereka paling sering dipahami sebagai tempat di mana Anda dapat melakukan komunikasi kelompok. Hanya di Discord tempat-tempat seperti itu disebut sedikit berbeda - saluran. Dalam hal ini, saluran dapat terdiri dari dua jenis: teks dan suara. Banyak orang lebih memilih Discord karena memungkinkan peserta untuk berkomunikasi di beberapa saluran teks secara bersamaan tanpa meninggalkan saluran suara.

Metode 3: Hapus Percakapan Perselisihan Menggunakan Reaksi

Tidak mungkin untuk menghapus semua pesan di Discord menggunakan reaksi, mereka sendiri membantu mengelola beberapa proses.

Misalnya, ada bot berguna yang memungkinkan Anda menambahkan polling ke server Discord, yang terdiri dari hingga sembilan jawaban. Dengan bantuan reaksi, Anda dapat melihat opsi jawaban mana yang dipilih ditetapkan pengguna dan juga menghapusnya. Awalnya, reaksi ditujukan untuk emoticon emoji.


Metode 4: Hapus pesan dari minggu lalu

Ada juga tempat untuk menjadi sedikit cara radikal untuk membersihkan pesan. Namun, ini memungkinkan Anda untuk menghapus semua pesan di Discord dari 7 hari terakhir.

Perlu dicatat bahwa metode ini hanya cocok jika Anda perlu menghapus pesan dari masing-masing pengguna, dan bukan seluruh obrolan.


Akhirnya, pengguna yang diblokir akan diblokir dari server, yaitu, mereka tidak akan dapat menggunakan tautan undangan ke sumber daya sampai mereka diblokir oleh pembuat atau anggota dengan hak administrator. Cara membatalkan pemblokiran seseorang menjelaskan hal berikut.

Metode 5: Mee6 Bot

Meskipun Discord tidak memungkinkan Anda untuk menghapus semua pesan, ada cara untuk menghapus hingga 100 pesan sekaligus. Untuk melakukan ini, Anda hanya perlu menginstal bot Mee6 tambahan. Perlu diketahui bahwa ini adalah metode termudah dan tercepat yang memungkinkan Anda untuk menghapus korespondensi.

Intinya, Mee6 adalah bot musik, tetapi memiliki beberapa fitur yang berguna.

  1. Langkah pertama adalah menambahkan bot ke server Anda. Ikuti tautan ini.
  2. Jalankan perintah" Tambahkan ke Perselisihan».
  3. Otorisasi bot Mee6.
  4. Selanjutnya, Anda harus memilih server di mana Mee6 akan mendominasi.
  5. Di jendela berikutnya, Anda dapat mengatur hak yang akan tersedia untuk bot yang ditambahkan.
  6. Setelah Anda mengklik "Otorisasi", konfirmasikan bahwa Anda bukan robot.
  7. Setelah menambahkan bot ke server, sebuah jendela akan terbuka di mana Anda harus mengatur konfigurasi dan parameter bot. Misalnya, beberapa plugin telah disertakan. Salah satunya adalah bantuan.
  8. Agar perubahan diterapkan, centang kotak dan klik " memperbarui”, yaitu memperbarui.
  9. Untuk memeriksa pengoperasian perintah, kirim pesan! bantuan di server di salah satu obrolan.
  10. Setelah itu, deskripsi berbagai poin dari plugin harus datang dalam pesan pribadi dari bot.
  11. Dari postingan pendukung Mee6 akan terlihat jelas bahwa kumpulan perintah untuk menghapus postingan dapat berisi plugin "Moderator". Di jendela pengeditan konfigurasi bot, klik oval oranye dengan teks "Nonaktif" di sebelah bagian "Moderator".
  12. Konfirmasi penambahan plugin.
  13. Perhatikan penyertaan perintah! Hapus dan simpan perubahan dengan operasi "Perbarui". Perintah !clear xx memungkinkan Anda menghapus hingga 100 pesan sekaligus, di mana Anda perlu menambahkan jumlah pesan yang akan dihapus, bukan xx.
  14. Kirim pesan dengan perintah !clear 50.
  15. Ini berarti 50 pesan terakhir akan dihapus dari obrolan. Hitung mundur pesan yang dihapus adalah dari akhir korespondensi, yaitu, pesan baru pertama dihapus, dan baru kemudian yang lama.

Algoritme tindakan yang memungkinkan Anda menghapus korespondensi melalui antarmuka telepon genggam, benar-benar mirip dengan operasi yang dilakukan. Itu sebabnya kami tidak akan mengilustrasikannya.

Discord telah menjadi tempat pertemuan bagi para gamer di seluruh internet. Tidak peduli game apa yang Anda mainkan, Discord memiliki komunitas untuk itu. Mempertimbangkan jumlah gamer di seluruh dunia yang menggunakan program ini, tidak mengherankan jika bot Discord menjadi semakin populer.

Server pribadi dapat menggunakan bot untuk bermain dengan teman, sementara server publik dapat menggunakannya untuk memoderasi pengguna. Bot musik yang berfungsi penuh tersedia untuk kedua jenis server, sehingga gamer selalu dapat mendengarkan musik sambil bermain. Dengan begitu banyak berbagai jenis bot, Anda mungkin kesulitan menemukan yang tepat untuk Anda. Hari ini kami ingin berbicara tentang bot paling populer, dan kami berharap informasi ini akan membantu Anda memutuskan apakah akan menambahkan bot ini atau itu ke saluran Anda atau tidak.

bot musik

Server mana pun dapat menggunakan bot musik. Faktanya, bot musik sangat populer sehingga ada seluruh bagian yang didedikasikan untuk mereka di halaman bot Discord. Ada banyak bot musik di luar sana, tetapi dua yang terbaik adalah Erisbot dan Pancake.

Erisbot intuitif dan mudah digunakan. Program ini bekerja seperti pemutar musik, dan menyertakan banyak fitur yang mirip dengan iPod. Anda bahkan dapat menggunakan program mandiri. Selain itu, ia memiliki gambar lucu dan pencarian kamus slang perkotaan bawaan.

Pancake sedikit berbeda dan hanya menawarkan beberapa fitur. Ini berfungsi seperti bot musik yang mirip dengan ErisBot, meskipun dengan pengaturan dan opsi yang lebih sedikit. Namun, ia juga memiliki beberapa opsi gambar, permainan, dan moderasi. Itu melakukan sedikit dari segalanya dan merupakan alat yang hebat untuk digunakan jika Anda menginginkan satu bot kaya fitur dan tidak ingin menambahkan banyak bot yang berbeda.

Bot moderator

Selain Pancake, ada banyak bot moderasi. Moderasi otomatis bisa sangat berguna saat mengelola server Discord publik, terutama jika Anda ingin menjaga bahasa dan konten obrolan tetap teratur.

Seperti Pancake, Dyno adalah bot kaya fitur. Seperti Pancake, ia dapat memutar musik, tetapi fungsi utamanya adalah moderasi. Tidak seperti kebanyakan bot, Dyno memiliki moderasi otomatis dan pesan selamat datang, sehingga dapat mengelola seluruh saluran tanpa perlu moderator berada di obrolan sepanjang waktu.

Sementara Dyno adalah bot kaya fitur, Auttaja dirancang hampir secara eksklusif untuk moderasi. Pada saat yang sama, potensi Auttaja sangat besar. Selain memoderasi obrolan secara otomatis, bot juga dapat memoderasi proses sistematis seperti nama pengguna dan hukuman.

Bot permainan / hiburan

Beberapa bot yang paling populer adalah bot permainan atau hiburan interaktif. Dua bot paling populer dalam kategori ini adalah Pokecord dan Dank Mem.

Pokecord adalah gim interaktif lucu yang pada dasarnya menciptakan petualangan teks Pokemon di saluran Anda. Ini adalah cara yang menyenangkan dan mudah untuk melibatkan anggota Discord Anda dalam permainan.

adalah bot bodoh yang hanya akan membiarkan pikiran Anda bersenang-senang. Ini memungkinkan Anda untuk membuat meme dan membagikannya, dan juga memiliki beberapa kesenangan lain dalam fungsinya. Namun, ini terutama dirancang untuk membuat meme dari gambar online populer.

Tidak dapat menemukan bot yang tepat - buat bot Anda sendiri!

Meskipun ada ratusan bot Discord, masing-masing dengan pengaturan uniknya sendiri dan berbagai perintah, Anda mungkin tidak menemukan satu yang disesuaikan dengan kebutuhan spesifik Anda. Atau mungkin Anda hanya ingin memiliki kustomisasi penuh atau lebih akses terbatas ke botnya. Bagaimanapun, ada beberapa cara untuk membuat bot Anda sendiri, tetapi kami akan fokus pada cara yang paling sederhana dan paling efektif:

Hal pertama yang perlu Anda lakukan adalah masuk ke Discord, buka halaman aplikasi dan klik "Buat aplikasi".

Kemudian tambahkan nama aplikasi (dan avatar jika Anda mau), dan klik "Bot" di panel di sisi kiri. Di tempat yang sama, klik "Tambahkan bot" ("Tambahkan bot"). Anda kemudian akan melihat jendela pop-up yang menanyakan apakah Anda ingin melanjutkan, klik "Ya".

Dari sini Anda dapat menentukan kekuatan spesifik Anda. Ini dapat disesuaikan sesuai dengan preferensi Anda. Di bawah nama pengguna bot, bagian yang disebut "Token" sekarang akan muncul. Di bawahnya, klik tautan "Klik untuk mengungkapkan token". Salin kode token, Anda akan membutuhkannya nanti

Kemudian klik "OAuth2" di sisi kiri. Di sini Anda harus menentukan program mana yang Anda buat. Klik "Bot" lalu salin URL yang akan ditampilkan. Anda akan dibawa ke halaman tempat Anda dapat menambahkan bot ke salah satu server yang Anda kelola. Selanjutnya, pilih server tempat Anda ingin menambahkan bot.

Di sini Anda akan memerlukan semacam program pengkodean dan beberapa pengetahuan untuk memanfaatkan bot sepenuhnya. Untuk mengaktifkan bot, Anda perlu editor teks, seperti NotePad, dan alat pengkodean, seperti JavaScript. Anda harus mengambil token yang Anda dapatkan sebelumnya dan menyimpannya sebagai dokumen NotePad ke folder untuk bot Anda. Dokumen ini harus diberi nama "auth.json" dan harus ditulis seperti ini:

token:

Anda harus membuat dua file lagi untuk menjalankan bot Anda. Satu harus disimpan sebagai package.json dengan kode berikut:

"name": "bot penyambut",

"versi": "1.0.0",

"keterangan": "",

"utama": "bot.js",

"pengarang": "",

ketergantungan: ()

Untuk kode terakhir, buat file dan beri nama “bot.js.” Di sini Anda harus merinci fungsi utama bot. Lebih disukai jika Anda memiliki pengetahuan dan keterampilan pengkodean sehingga Anda dapat membuat bot dengan set fitur yang Anda butuhkan. Namun, situs Medium menyediakan kode bot Discord sederhana. Jadi, jika Anda tidak terbiasa dengan JavaScript, Anda dapat menggunakan kode berikut untuk membuat bot dengan serangkaian fitur sederhana.

var Perselisihan = membutuhkan('discord.io'); var logger = membutuhkan('winston'); var auth = membutuhkan('./auth.json'); // Konfigurasi pengaturan logger logger.remove(logger.transports.Console); logger.add(logger.transports.Console, ( mewarnai: benar )); logger.level = 'debug'; // Inisialisasi Bot Perselisihan var bot = new Discord.Client(( token: auth.token, autorun: true )); bot.on('ready', function (evt) ( logger.info('Connected'); logger.info('Logged in as: '); logger.info(bot.username + ' - (' + bot.id + ')'); )); bot.on('message', function (user, userID, channelID, message, evt) ( // Bot kita perlu mengetahui apakah ia akan menjalankan perintah // Ia akan mendengarkan pesan yang akan dimulai dengan `!` if ( message.substring(0, 1) == '!') ( var args = message.substring(1).split(' '); var cmd = args;

args = args.splice(1); switch(cmd) ( // !ping case 'ping': bot.sendMessage(( to: channelID, message: 'Pong!' )); break; // Tambahkan saja perintah case jika Anda mau.. ) ) ) );

Terakhir, Anda dapat menjalankan kode ini dengan membuka JavaScript (atau program pengkodean lain pilihan Anda) dan mengetik "npm install discord.io winston --save" - ​​yang akan menginstal semua program yang Anda perlukan untuk menjalankan bot. Kemudian ketik "node bot.js" setiap kali Anda ingin menjalankan bot.

Karena proses ini memerlukan beberapa pengetahuan pengkodean dan ada ratusan bot yang sudah dibuat, Anda harus mempertimbangkannya sebelum mencoba membuatnya sendiri. Tentu saja, Anda mungkin tergoda untuk langsung membuatnya sendiri ketika ada banyak bot yang ada di luar sana yang dapat melakukan apa yang Anda butuhkan.



Memuat...
Atas