hub-stats.lua Verlihub उपयोगकर्ता गणना डिस्प्ले बॉट

बनाया गया: 2026/07/02 19:41:27 America/Chicago
द्वारा: admin
बदला गया: 2026/07/03 13:19:11 America/Chicago
द्वारा: admin

hub-stats.lua स्क्रिप्ट एक बॉट-जैसी उपयोगकर्ता-सूची प्रविष्टि बनाती है जो वर्तमान हब आँकड़े प्रदर्शित करती है। एक हब एक अलग बाहरी बॉट प्रक्रिया चलाए बिना ऑनलाइन उपयोगकर्ताओं, ऑपरेटरों, कुल शेयर, या एक कॉम्पैक्ट स्थिति मार्कर दिखा सकता है।

यह स्क्रिप्ट केवल प्रदर्शन पर केंद्रित है। यह सरल काउंटरों को पढ़ता है, जैसे एक संक्षिप्त नाम बनाता है !_Stats_128U_4Ops, और महंगे काम को हब प्रक्रिया से बाहर छोड़ देता है।

यह स्क्रिप्ट क्या करती है

स्क्रिप्ट कॉन्फ़िगर किए गए हब आँकड़ों से एक प्रदर्शन नाम बनाती है।

उदाहरण प्रदर्शन नाम:

!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB

सामान्य उपयोगों में शामिल हैं:

  • मौजूदा उपयोगकर्ताओं को ऑनलाइन दिखाया जा रहा है.
  • ऑपरेटरों को ऑनलाइन दिखाया जा रहा है.
  • जब Lua एपीआई इसे सस्ते में उजागर करता है तो कुल हब शेयर दिखाया जाता है।
  • जब आपका निर्माण उस काउंटर को उजागर करता है तो चरम उपयोगकर्ताओं को दिखाना।
  • जब आपका निर्माण उस काउंटर को उजागर करता है तो पंजीकृत उपयोगकर्ता दिखाना।
  • एक कॉम्पैक्ट हब स्थिति मार्कर बनाना।
  • उपयोगकर्ता सूची में लाइव आँकड़े प्रविष्टि जोड़ना।

उपलब्ध सटीक काउंटर आपके Verlihub संस्करण द्वारा उजागर Verlihub Lua प्लगइन एपीआई पर निर्भर करते हैं।

आवश्यकताएं

इस स्क्रिप्ट की आवश्यकता है:

  • Verlihub स्थापित और चल रहा है।
  • Verlihub Lua प्लगइन स्थापित किया गया।
  • Lua प्लगइन Verlihub में सक्षम है।
  • Lua स्क्रिप्ट को लोड और अनलोड करने की अनुमति।
  • Verlihub Lua फ़ाइलों के लिए एक लिखने योग्य स्क्रिप्ट निर्देशिका।
  • एक Verlihub Lua बिल्ड जो उपयोगकर्ता-सूची डिस्प्ले डेटा को उजागर कर सकता है या डिस्प्ले प्रविष्टि से नाम-जनरेशन फ़ंक्शन को कॉल कर सकता है।

स्क्रिप्ट लोड करने से पहले, पुष्टि करें कि Lua प्लगइन सक्रिय है:

!pluglist

यदि Lua प्लगइन सूचीबद्ध नहीं है, तो पहले इसे मूल Lua सेटअप आलेख से लोड या सक्षम करें।

एक समर्पित स्क्रिप्ट निर्देशिका का उपयोग करें:

mkdir -p /PATH/TO/HUB/scripts

स्क्रिप्ट को यहां रखें:

/PATH/TO/HUB/scripts/hub-stats.lua

उत्पादन प्रणालियों के लिए, केवल विश्वसनीय प्रशासकों या Verlihub सेवा उपयोगकर्ता को ही उस निर्देशिका पर लिखना चाहिए। विश्व-लेखन योग्य अनुमतियों का उपयोग न करें.

लोड और अनलोड कमांड

स्क्रिप्ट लोड करें:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

स्क्रिप्ट अनलोड करें:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua

यदि आप स्क्रिप्ट संपादित करते हैं, तो उसे अनलोड करें और फिर से लोड करें:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua

जब तक आपका Verlihub Lua प्लगइन कॉन्फ़िगरेशन सापेक्ष पथों का समर्थन नहीं करता, तब तक पूर्ण निरपेक्ष पथ का उपयोग करें।

स्क्रिप्ट कोड

-- Script: hub-stats.lua
-- Purpose: Displays hub statistics as a bot-like user-list entry.
-- Scope: Lightweight display bot only.
-- Notes: Available statistics depend on the Verlihub Lua API exposed by your build.

name = ""
class = 3
description = "Hub Stats Bot"
speed = "100"
email = ""
share = "0"
prefix = "!_Stats_"
postfix = ""
interval = 60
counter = 0
show_users = true
show_ops = true
show_share = false

function SafeCall(callback, fallback)
    local ok, result = pcall(callback)

    if ok and result ~= nil then
        return result
    end

    return fallback
end

function FormatShare(bytes)
    local value = tonumber(bytes)

    if value == nil then
        return "0B"
    end

    if value >= 1099511627776 then
        return string.format("%.1fTB", value / 1099511627776)
    end

    if value >= 1073741824 then
        return string.format("%.1fGB", value / 1073741824)
    end

    if value >= 1048576 then
        return string.format("%.1fMB", value / 1048576)
    end

    if value >= 1024 then
        return string.format("%.1fKB", value / 1024)
    end

    return tostring(value) .. "B"
end

function GetUserCount()
    -- Replace this function body if your Verlihub Lua API uses a different call.
    return SafeCall(function()
        return VH:GetUsersCount()
    end, 0)
end

function GetOperatorCount()
    -- Replace this function body if your Verlihub Lua API uses a different call.
    return SafeCall(function()
        return VH:GetOperatorsCount()
    end, 0)
end

function GetTotalShare()
    -- Replace this function body if your Verlihub Lua API uses a different call.
    return SafeCall(function()
        return VH:GetTotalShare()
    end, 0)
end

function GetStatsText()
    local parts = {}

    if show_users then
        table.insert(parts, tostring(GetUserCount()) .. "U")
    end

    if show_ops then
        table.insert(parts, tostring(GetOperatorCount()) .. "Ops")
    end

    if show_share then
        table.insert(parts, FormatShare(GetTotalShare()))
    end

    if table.getn(parts) == 0 then
        return "Online"
    end

    return table.concat(parts, "_")
end

function GetName()
    return prefix .. GetStatsText() .. postfix
end

कॉन्फ़िगरेशन विकल्प

name

name = ""

बॉट-जैसी प्रविष्टि के लिए आधार नाम मान।

इस स्क्रिप्ट में, दृश्य नाम उत्पन्न होता है GetName(), इसलिए name आमतौर पर खाली रह सकता है.

class

class = 3

बॉट जैसी प्रविष्टि के प्रदर्शित वर्ग या प्रोफ़ाइल स्तर को नियंत्रित करता है।

वर्ग मानों का अर्थ हब कॉन्फ़िगरेशन पर निर्भर करता है। ऐसे मान का उपयोग करें जो उपयोगकर्ता सूची में सांख्यिकी प्रविष्टि के प्रदर्शित होने के तरीके से मेल खाता हो।

description

description = "Hub Stats Bot"

बॉट-जैसी प्रविष्टि के लिए दिखाया गया विवरण।

उदाहरण:

description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"

speed

speed = "100"

बॉट-जैसी प्रविष्टि के लिए कनेक्शन गति मान प्रदर्शित होता है। ये कॉस्मेटिक है. यह नियंत्रित नहीं करता कि स्क्रिप्ट कितनी बार अपडेट होती है।

email

email = ""

बॉट-जैसी प्रविष्टि के लिए दिखाया गया ईमेल फ़ील्ड। जब तक आप संपर्क पता प्रदर्शित नहीं करना चाहते, इसे खाली छोड़ दें।

share

share = "0"

बॉट-जैसी प्रविष्टि के लिए प्रदर्शित शेयर आकार। आँकड़े प्रदर्शित करने वाले बॉट के लिए, 0 यह तब तक उपयुक्त है जब तक आप नहीं चाहते कि प्रविष्टि सजावटी शेयर मूल्य दर्शाए।

prefix

prefix = "!_Stats_"

पाठ को जनरेट किए गए आँकड़ों से पहले रखा गया है।

उदाहरण:

prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "

ऐसा उपसर्ग चुनें जो हब उपयोगकर्ता सूची में स्पष्ट रूप से क्रमबद्ध हो।

postfix

postfix = ""

उत्पन्न आँकड़ों के बाद पाठ रखा गया।

उदाहरण:

postfix = ""
postfix = "_Online"
postfix = "_Hub"

interval

interval = 60

नियंत्रित करता है कि डिस्प्ले प्रविष्टि कितनी बार अपडेट होनी चाहिए।

अनुशंसित मान:

कीमतअर्थ
30अधिक प्रतिक्रियाशील. व्यस्त केन्द्रों के लिए उपयोगी.
60अनुशंसित डिफ़ॉल्ट.
300कम गतिविधि. शांत केन्द्रों के लिए उपयोगी.

निम्न मूल्यों से बचें. हब आँकड़ों को हर सेकंड अपडेट करने की आवश्यकता नहीं है।

counter

counter = 0

स्क्रिप्ट द्वारा प्रयुक्त आंतरिक काउंटर. इसे तब तक न बदलें जब तक आप स्क्रिप्ट तर्क को संशोधित नहीं कर रहे हों।

show_users

show_users = true

नियंत्रित करता है कि प्रदर्शन नाम में वर्तमान ऑनलाइन उपयोगकर्ता संख्या शामिल है या नहीं।

उदाहरण आउटपुट:

!_Stats_128U

show_ops

show_ops = true

नियंत्रित करता है कि प्रदर्शन नाम में वर्तमान ऑपरेटर गिनती शामिल है या नहीं।

उदाहरण आउटपुट:

!_Stats_128U_4Ops

show_share

show_share = false

नियंत्रित करता है कि प्रदर्शन नाम में कुल हब शेयर शामिल है या नहीं।

उदाहरण आउटपुट:

!_Stats_128U_4Ops_24.5TB

इसे तभी सक्षम करें जब आपका Verlihub Lua एपीआई एक विश्वसनीय कुल शेयर मूल्य प्रदर्शित करता है।

एपीआई संगतता नोट्स

उदाहरण स्क्रिप्ट इन फ़ंक्शंस का उपयोग करती है:

VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()

आपका Verlihub Lua प्लगइन संस्करण विभिन्न फ़ंक्शन नामों को उजागर कर सकता है। यदि स्क्रिप्ट लोड होती है लेकिन हमेशा शून्य प्रदर्शित करती है, तो काउंटर फ़ंक्शंस द्वारा उपयोग की जाने वाली एपीआई कॉल को समायोजित करें।

संपादित करने के मुख्य कार्य हैं:

function GetUserCount()
    return SafeCall(function()
        return VH:GetUsersCount()
    end, 0)
end

function GetOperatorCount()
    return SafeCall(function()
        return VH:GetOperatorsCount()
    end, 0)
end

function GetTotalShare()
    return SafeCall(function()
        return VH:GetTotalShare()
    end, 0)
end

उन कॉलों को अपने Verlihub Lua प्लगइन संस्करण द्वारा समर्थित फ़ंक्शन से बदलें।

उदाहरण विन्यास

केवल उपयोगकर्ता गणना

prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false

उदाहरण प्रदर्शन:

!_Users_128U_Online

उपयोगकर्ता और ऑपरेटर

prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false

उदाहरण प्रदर्शन:

!_Stats_128U_4Ops

कुल शेयर प्रदर्शन

prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true

उदाहरण प्रदर्शन:

!_Share_24.5TB

कॉम्पैक्ट हब स्थिति

prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true

उदाहरण प्रदर्शन:

!_Hub_128U_4Ops_24.5TB

अधिकांश हब के लिए, केवल उपयोगकर्ताओं और ऑपरेटरों से प्रारंभ करें:

prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false

यह सामान्य उपयोगकर्ता सूचियों के लिए डिस्प्ले को पर्याप्त छोटा रखता है।

यदि हब उपयोगकर्ता सूची में भीड़ है, तो छोटे डिस्प्ले का उपयोग करें:

prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false

यदि आपके Verlihub संस्करण में कुल शेयर गणना महंगी या अविश्वसनीय है, तो इसे अक्षम रखें:

show_share = false

स्क्रिप्ट का परीक्षण

स्क्रिप्ट लोड करने के बाद, जेनरेट की गई सांख्यिकी प्रविष्टि के लिए हब उपयोगकर्ता सूची की जांच करें।

पुष्टि करें कि:

  • प्रविष्टि केवल एक बार दिखाई देती है.
  • प्रदर्शित उपयोगकर्ता संख्या सही है.
  • प्रदर्शित ऑपरेटर संख्या सही है.
  • सक्षम होने पर कुल शेयर सही ढंग से प्रदर्शित होता है।
  • उपयोगकर्ता सूची के लिए नाम बहुत लंबा नहीं है.
  • अद्यतन अंतराल उचित है.
  • स्क्रिप्ट अनलोड करने के बाद प्रविष्टि गायब हो जाती है।
  • स्क्रिप्ट को पुनः लोड करने से डुप्लिकेट नहीं बनते हैं।

यदि डिस्प्ले हमेशा शून्य दिखाता है, तो एपीआई संगतता अनुभाग की समीक्षा करें।

समस्या निवारण

स्क्रिप्ट लोड नहीं होती

जांचें कि Lua प्लगइन सक्रिय है:

!pluglist

फ़ाइल पथ जाँचें:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

यदि सापेक्ष पथ काम नहीं करते तो निरपेक्ष पथ का उपयोग करें।

आँकड़े हमेशा शून्य दिखाते हैं

इसका आमतौर पर मतलब है कि Lua एपीआई फ़ंक्शन नाम आपके Verlihub प्लगइन संस्करण से मेल नहीं खाते हैं।

इसमें प्रयुक्त कार्यों की जाँच करें:

GetUserCount()
GetOperatorCount()
GetTotalShare()

फिर उदाहरण बदलें VH:* आपके इंस्टॉलेशन द्वारा समर्थित फ़ंक्शन के साथ कॉल करता है।

प्रविष्टि नाम बहुत लंबा है

कुछ फ़ील्ड अक्षम करें या उपसर्ग छोटा करें.

उदाहरण:

prefix = "!_S_"
show_share = false

अपडेट बहुत बार प्रदर्शित करें

अंतराल बढ़ाएँ.

अनुशंसित:

interval = 60

शांत केन्द्रों के लिए:

interval = 300

डुप्लिकेट प्रविष्टियाँ दिखाई देती हैं

स्क्रिप्ट अनलोड करें:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua

फिर इसे दोबारा लोड करें:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

यदि डुप्लिकेट जारी रहता है, तो रखरखाव विंडो के दौरान Lua प्लगइन या Verlihub सेवा को पुनरारंभ करें।

सुरक्षा नोट

यह स्क्रिप्ट हल्की रहनी चाहिए. जोडो मत:

  • बाहरी HTTP अनुरोध.
  • प्रत्येक अद्यतन पर डेटाबेस क्वेरीज़।
  • फ़ाइल स्कैनिंग.
  • लंबे लूप.
  • स्लीप कॉल्स को ब्लॉक करना.
  • प्रति-उपयोगकर्ता महंगी गणनाएँ।

आँकड़े प्रदर्शन स्क्रिप्ट को सरल हब काउंटर पढ़ना चाहिए और प्रदर्शन नाम अपडेट करना चाहिए। यदि किसी मान की गणना करना महंगा है, तो उसे हब प्रक्रिया के बाहर कैश करें।

रखरखाव नोट्स

स्क्रिप्ट बदलने से पहले बैकअप रखें:

cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak

यदि Git का उपयोग कर रहे हैं:

cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"

केवल उपसर्ग, उपसर्ग, अंतराल, या सक्षम आँकड़े बदलते समय, किसी तर्क परिवर्तन की आवश्यकता नहीं होती है।

भविष्य में सुधार का सुझाव दिया

संभावित बाद के संस्करण जोड़ सकते हैं:

  • अधिकतम उपयोगकर्ता संख्या प्रदर्शन.
  • पंजीकृत उपयोगकर्ता संख्या प्रदर्शन।
  • हब अपटाइम डिस्प्ले।
  • इकाई द्वारा कुल शेयर प्रदर्शन.
  • उपयोगकर्ताओं के लिए अलग-अलग प्रदर्शन प्रविष्टियाँ और साझा करें।
  • ऑपरेटर-केवल आँकड़े आदेश।
  • दैनिक हाई-वॉटर मार्क ट्रैकिंग।
  • फ़ाइल-आधारित आँकड़े स्नैपशॉट लॉगिंग।

केवल वे आँकड़े जोड़ें जिन्हें उपयोगकर्ता या ऑपरेटर पढ़ेंगे। बहुत अधिक जानकारी उपयोगकर्ता-सूची प्रविष्टि को स्कैन करना कठिन बना देती है।

मूल पृष्ठ