Sebuah bot discord sederhana untuk memberikan update terkait penggunaan system seperti CPU, RAM dan DISK. bot ini akan melakukan update secara berkala pada channel discord yang telah kita tentukan sebelumnya.

bot ini tergolong sangat simple karena hanya dalam satu file saja dan menggunakan bahasa python.

File name : main.py

import discord
import psutil
import asyncio
from datetime import datetime

# Menginisialisasi intents
intents = discord.Intents.default()
intents.typing = False
intents.presences = False

# Menginisialisasi bot
client = discord.Client(intents=intents)

# Token bot Discord, ganti dengan token bot Anda sendiri
TOKEN = ''

# ID saluran Discord, ganti dengan ID saluran yang Anda inginkan
CHANNEL_ID = 

# Fungsi untuk mendapatkan informasi penggunaan disk
def get_disk_usage():
    disk_usage = psutil.disk_usage('/')
    total = round(disk_usage.total / (1024 ** 3), 2)
    used = round(disk_usage.used / (1024 ** 3), 2)
    free = round(disk_usage.free / (1024 ** 3), 2)
    disk_usage_str = f"Total: {total} GB\n"
    disk_usage_str += f"Used: {used} GB\n"
    disk_usage_str += f"Free: {free} GB"
    return disk_usage_str

# Fungsi untuk mendapatkan informasi penggunaan RAM
def get_ram_usage():
    total = round(psutil.virtual_memory().total / (1024 ** 3), 2)
    free = round(psutil.virtual_memory().available / (1024 ** 3), 2)
    used = round(total - free, 2)
    ram_usage = f"Total: {total} GB\n"
    ram_usage += f"Used: {used} GB\n"
    ram_usage += f"Free: {free} GB"
    return ram_usage

# Fungsi untuk mendapatkan informasi penggunaan CPU
def get_cpu_usage():
    cpu_usage = f"CPU Usage: {psutil.cpu_percent(interval=1)}%"
    return cpu_usage

# Event yang terpanggil ketika bot berhasil terhubung ke server Discord
@client.event
async def on_ready():
    print(f'Bot is ready. Connected as {client.user}')
    await update_channel()

# Fungsi untuk memperbarui saluran pemantauan
async def update_channel():
    channel = client.get_channel(CHANNEL_ID)
    if channel:
        # Mencari pesan terakhir yang dikirimkan oleh bot di saluran pemantauan
        async for message in channel.history(limit=1):
            disk_usage = get_disk_usage()
            ram_usage = get_ram_usage()
            cpu_usage = get_cpu_usage()

            # Membuat objek embed baru
            embed = discord.Embed(title="System Usage", color=discord.Color.blue())
            
            embed.add_field(name="Network",value="IP : 103.167.150.83\nPORT : 16261", inline=False)
            
            
            # Menambahkan informasi penggunaan disk ke embed
            embed.add_field(name="Disk", value=disk_usage, inline=False)

            # Menambahkan informasi penggunaan RAM ke embed
            embed.add_field(name="RAM", value=ram_usage, inline=False)

            # Menambahkan informasi penggunaan CPU ke embed
            embed.add_field(name="CPU", value=cpu_usage, inline=False)
            
            # Cek apakah RAM tersisa kurang dari 500MB
            if psutil.virtual_memory().available < 500 * 1024 * 1024:
                embed.color = discord.Color.red()  # Mengubah warna embed menjadi merah
                embed.add_field(name="Warning", value="Wake up <@485472723884310539> RAM is running low! ", inline=False)
            
            # Menambahkan waktu pembaruan pada footer embed
            current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            embed.set_footer(text=f"Last updated: {current_time}\nBy : < / BLANK >")

            # Mengirim embed ke saluran
            await message.edit(content=None, embed=embed)

    await asyncio.sleep(60)
    await update_channel()

# Menjalankan bot
client.run(TOKEN)

untuk menjalankan program ini cukup simple dengan menggunakan perintah : python3 main.py