From c227ed7c7503142a25b8441eef19561fbc444d7f Mon Sep 17 00:00:00 2001 From: extreme4all <40169115+extreme4all@users.noreply.github.com> Date: Tue, 23 Jan 2024 20:37:52 +0100 Subject: [PATCH 1/3] update dependancies --- notes.md | 39 +++++++++++++++++++++++++++++++------- requirements.txt | 47 +++++++++++++++++++++++++--------------------- src/core/config.py | 2 +- 3 files changed, 59 insertions(+), 29 deletions(-) diff --git a/notes.md b/notes.md index 5419c0b..a3ddd53 100644 --- a/notes.md +++ b/notes.md @@ -1,37 +1,62 @@ # api documentation -``` +```sh http://127.0.0.1:5000/docs http://127.0.0.1:5000/redoc ``` # extra info -``` +```sh POST: to create data. GET: to read data. PUT: to update data. DELETE: to delete data. ``` # keeping fork up to date -``` +```sh git checkout develop git pull --rebase upstream develop git push ``` # setup -creating a python venv to work in and install the project requirements +## linux +```sh +python3 -m venv .venv +source .venv/bin/activate +python3 -m pip install --upgrade pip +pip install -r requirements.txt ``` +## windows +creating a python venv to work in and install the project requirements +```sh python -m venv .venv .venv\Scripts\activate python -m pip install --upgrade pip pip install -r requirements.txt ``` # for admin purposes saving & upgrading -when you added some dependancies update the requirements +## linux +```sh +#!/bin/bash + +# Replace '==' with '>=' in requirements.txt +sed -i 's/==/>=/g' requirements.txt + +# Install or upgrade packages +pip install -r requirements.txt --upgrade + +# Save the installed package versions to requirements.txt +pip freeze > requirements.txt + +# Replace '>=' with '==' in requirements.txt +sed -i 's/>=/==/g' requirements.txt ``` +## windows +when you added some dependancies update the requirements +```sh venv\Scripts\activate call pip freeze > requirements.txt ``` when you want to upgrade the dependancies -``` +```sh venv\Scripts\activate powershell "(Get-Content requirements.txt) | ForEach-Object { $_ -replace '==', '>=' } | Set-Content requirements.txt" call pip install -r requirements.txt --upgrade @@ -40,7 +65,7 @@ powershell "(Get-Content requirements.txt) | ForEach-Object { $_ -replace '>=', ``` # branch cleanup if your branch gets out of sync and for some reason you have many pushes and pulls, to become insync without pushing some random changes do this -``` +```sh git fetch origin git reset --hard origin/{branchname} git clean -f -d diff --git a/requirements.txt b/requirements.txt index 7ee7f0d..a4957b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,28 +1,33 @@ -aiohttp==3.8.5 +aiohttp==3.9.1 aiosignal==1.3.1 -anyio==3.6.2 -async-timeout==4.0.2 -attrs==22.2.0 -black==23.1.0 -charset-normalizer==3.1.0 -click==8.1.3 +annotated-types==0.6.0 +anyio==4.2.0 +async-timeout==4.0.3 +attrs==23.2.0 +black==23.12.1 +charset-normalizer==3.3.2 +click==8.1.7 colorama==0.4.6 -fastapi==0.95.0 -frozenlist==1.3.3 +exceptiongroup==1.2.0 +fastapi==0.109.0 +frozenlist==1.4.1 h11==0.14.0 -idna==3.4 -Jinja2==3.1.2 -MarkupSafe==2.1.2 +idna==3.6 +Jinja2==3.1.3 +MarkupSafe==2.1.4 multidict==6.0.4 mypy-extensions==1.0.0 -packaging==23.0 -pathspec==0.11.1 -platformdirs==3.1.1 -pydantic==1.10.6 -python-dotenv==1.0.0 +packaging==23.2 +pathspec==0.12.1 +platformdirs==4.1.0 +pydantic==2.5.3 +pydantic-settings==2.1.0 +pydantic_core==2.14.6 +python-dotenv==1.0.1 python-multipart==0.0.6 sniffio==1.3.0 -starlette==0.27.0 -typing_extensions==4.5.0 -uvicorn==0.21.1 -yarl==1.8.2 +starlette==0.35.1 +tomli==2.0.1 +typing_extensions==4.9.0 +uvicorn==0.27.0 +yarl==1.9.4 diff --git a/src/core/config.py b/src/core/config.py index 5d45f38..55d9be8 100644 --- a/src/core/config.py +++ b/src/core/config.py @@ -1,4 +1,4 @@ -from pydantic import BaseSettings +from pydantic_settings import BaseSettings import os from src.app.controllers.bot_detector import BotDetector From 7546a08e385b017a52ba2b00c253aa9fd3b71f53 Mon Sep 17 00:00:00 2001 From: extreme4all <> Date: Tue, 23 Jan 2024 20:40:13 +0100 Subject: [PATCH 2/3] auto format all files --- .pre-commit-config.yaml | 10 + requirements.txt | 8 + src/api/__init__.py | 5 +- src/api/account_search.py | 5 +- src/api/contact.py | 3 +- src/api/contributors.py | 2 +- src/api/faq.py | 2 +- src/api/home.py | 8 +- src/api/monitoring.py | 2 +- src/app/controllers/bot_detector.py | 4 +- src/app/controllers/patreon.py | 40 +- src/app/schemas/extras/health.py | 2 +- src/core/config.py | 7 +- src/core/server.py | 3 +- src/templates/base.html | 84 +-- src/templates/head.html | 12 +- src/templates/header.html | 8 +- src/templates/navigation.html | 14 +- src/templates/pages/account_search.html | 52 +- src/templates/pages/contact.html | 20 +- src/templates/pages/contributors.html | 33 +- src/templates/pages/faq.html | 804 +++++++++++++----------- src/templates/pages/home.html | 30 +- 23 files changed, 662 insertions(+), 496 deletions(-) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..b23314c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,10 @@ +repos: + - repo: https://github.com/psf/black + rev: 23.10.1 + hooks: + - id: black + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + args: ["--profile", "black"] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index a4957b8..82d02ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,29 +5,37 @@ anyio==4.2.0 async-timeout==4.0.3 attrs==23.2.0 black==23.12.1 +cfgv==3.4.0 charset-normalizer==3.3.2 click==8.1.7 colorama==0.4.6 +distlib==0.3.8 exceptiongroup==1.2.0 fastapi==0.109.0 +filelock==3.13.1 frozenlist==1.4.1 h11==0.14.0 +identify==2.5.33 idna==3.6 Jinja2==3.1.3 MarkupSafe==2.1.4 multidict==6.0.4 mypy-extensions==1.0.0 +nodeenv==1.8.0 packaging==23.2 pathspec==0.12.1 platformdirs==4.1.0 +pre-commit==3.6.0 pydantic==2.5.3 pydantic-settings==2.1.0 pydantic_core==2.14.6 python-dotenv==1.0.1 python-multipart==0.0.6 +PyYAML==6.0.1 sniffio==1.3.0 starlette==0.35.1 tomli==2.0.1 typing_extensions==4.9.0 uvicorn==0.27.0 +virtualenv==20.25.0 yarl==1.9.4 diff --git a/src/api/__init__.py b/src/api/__init__.py index 4a39579..aaae831 100644 --- a/src/api/__init__.py +++ b/src/api/__init__.py @@ -1,5 +1,6 @@ from fastapi import APIRouter -from src.api import monitoring, home, account_search, contributors, contact, faq + +from src.api import account_search, contact, contributors, faq, home, monitoring router = APIRouter() router.include_router(monitoring.router, prefix="/monitoring") @@ -7,4 +8,4 @@ router.include_router(account_search.router, prefix="/account-search") router.include_router(contributors.router, prefix="/contributors") router.include_router(contact.router, prefix="/contact") -router.include_router(faq.router, prefix="/about") \ No newline at end of file +router.include_router(faq.router, prefix="/about") diff --git a/src/api/account_search.py b/src/api/account_search.py index 5c05186..5bcc52c 100644 --- a/src/api/account_search.py +++ b/src/api/account_search.py @@ -1,8 +1,7 @@ -from fastapi import APIRouter, Request, Form +from fastapi import APIRouter, Form, Request from fastapi.responses import HTMLResponse -from src.core.config import CONFIG, templates, BD_API - +from src.core.config import BD_API, CONFIG, templates router = APIRouter() diff --git a/src/api/contact.py b/src/api/contact.py index 5e32c62..2d9f2e2 100644 --- a/src/api/contact.py +++ b/src/api/contact.py @@ -1,5 +1,6 @@ from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse + from src.core.config import CONFIG, templates router = APIRouter() @@ -7,4 +8,4 @@ @router.get("/") async def contact(request: Request) -> HTMLResponse: - return templates.TemplateResponse("pages/contact.html", {"request": request}) \ No newline at end of file + return templates.TemplateResponse("pages/contact.html", {"request": request}) diff --git a/src/api/contributors.py b/src/api/contributors.py index 5c2a5f1..67e3c98 100644 --- a/src/api/contributors.py +++ b/src/api/contributors.py @@ -7,4 +7,4 @@ @router.get("/") async def contributors(request: Request): - return templates.TemplateResponse("pages/contributors.html", {"request": request}) \ No newline at end of file + return templates.TemplateResponse("pages/contributors.html", {"request": request}) diff --git a/src/api/faq.py b/src/api/faq.py index 3d5b738..29b6033 100644 --- a/src/api/faq.py +++ b/src/api/faq.py @@ -7,4 +7,4 @@ @router.get("/") async def faq(request: Request): - return templates.TemplateResponse("pages/faq.html", {"request": request}) \ No newline at end of file + return templates.TemplateResponse("pages/faq.html", {"request": request}) diff --git a/src/api/home.py b/src/api/home.py index 26cd12f..832ce3b 100644 --- a/src/api/home.py +++ b/src/api/home.py @@ -1,18 +1,20 @@ from fastapi import APIRouter, Request - -from src.core.config import CONFIG, templates, BD_API from pydantic import BaseModel +from src.core.config import BD_API, CONFIG, templates + router = APIRouter() + class Stats(BaseModel): total_bans: int total_real_players: int total_accounts: int + @router.get("/") async def home(request: Request): stats = await BD_API.get_project_stats() stats = Stats(**stats) response = {"request": request, "stats": stats.dict()} - return templates.TemplateResponse("pages/home.html", response) \ No newline at end of file + return templates.TemplateResponse("pages/home.html", response) diff --git a/src/api/monitoring.py b/src/api/monitoring.py index 57fa96b..8ddf86c 100644 --- a/src/api/monitoring.py +++ b/src/api/monitoring.py @@ -8,4 +8,4 @@ @router.get("/", response_model=Health) async def health() -> Health: - return Health(version=CONFIG.RELEASE_VERSION, status="Healthy") \ No newline at end of file + return Health(version=CONFIG.RELEASE_VERSION, status="Healthy") diff --git a/src/app/controllers/bot_detector.py b/src/app/controllers/bot_detector.py index 184c1c8..ecee4ea 100644 --- a/src/app/controllers/bot_detector.py +++ b/src/app/controllers/bot_detector.py @@ -32,9 +32,9 @@ async def get_player(self, player_name: str): async with self.session.get(url) as response: data = await response.json() return data - + async def get_project_stats(self): url = f"{self.base_url}/site/dashboard/projectstats" async with self.session.get(url) as response: data = await response.json() - return data \ No newline at end of file + return data diff --git a/src/app/controllers/patreon.py b/src/app/controllers/patreon.py index e33cbcd..40ec5ed 100644 --- a/src/app/controllers/patreon.py +++ b/src/app/controllers/patreon.py @@ -1,6 +1,8 @@ +from typing import List + import aiohttp from pydantic import BaseModel -from typing import List + class Campaign(BaseModel): id: str @@ -8,24 +10,28 @@ class Campaign(BaseModel): attributes: dict relationships: dict + class CampaignsResponse(BaseModel): data: List[Campaign] + class Member(BaseModel): id: str type: str attributes: dict relationships: dict + class MembersResponse(BaseModel): data: List[Member] + class Patreon: def __init__( self, client_id: str, client_secret: str, - base_url: str = "https://www.patreon.com/api/oauth2/v2" + base_url: str = "https://www.patreon.com/api/oauth2/v2", ): self.client_id = client_id self.client_secret = client_secret @@ -33,57 +39,55 @@ def __init__( self.session = aiohttp.ClientSession() self.access_token = None self.headers = None - + async def _client_authenticate(self): # Step 1: Exchange your client credentials for an access token data = { "grant_type": "client_credentials", "client_id": self.client_id, "client_secret": self.client_secret, - "scope": "identity campaigns" + "scope": "identity campaigns", } token_url = f"{self.base_url}/oauth2/token" async with self.session.post(token_url, data=data) as resp: token_data = await resp.json() self.access_token = token_data["access_token"] - self.headers = { - "Authorization": f"Bearer {self.access_token}" - } - + self.headers = {"Authorization": f"Bearer {self.access_token}"} + async def _get_headers(self): # Check if we are authenticated if not self.headers: await self._client_authenticate() - + return self.headers - + async def get_campaigns(self) -> CampaignsResponse: headers = await self._get_headers() - + url = f"{self.base_url}/campaigns" async with self.session.get(url, headers=headers) as resp: data = await resp.json() return CampaignsResponse(**data) - + async def get_members(self, campaign_id: str) -> MembersResponse: headers = await self._get_headers() - + url = f"{self.base_url}/campaigns/{campaign_id}/members" async with self.session.get(url, headers=headers) as resp: data = await resp.json() return MembersResponse(**data) - + async def get_member(self, member_id: str) -> Member: headers = await self._get_headers() - + url = f"{self.base_url}/members/{member_id}" async with self.session.get(url, headers=headers) as resp: data = await resp.json() return Member(**data) - + async def get_identity(self): headers = await self._get_headers() - + url = f"{self.base_url}/identity" async with self.session.get(url, headers=headers) as resp: - return await resp.json() \ No newline at end of file + return await resp.json() diff --git a/src/app/schemas/extras/health.py b/src/app/schemas/extras/health.py index d145fd5..1a19e00 100644 --- a/src/app/schemas/extras/health.py +++ b/src/app/schemas/extras/health.py @@ -3,4 +3,4 @@ class Health(BaseModel): version: str = Field(..., example="1.0.0") - status: str = Field(..., example="OK") \ No newline at end of file + status: str = Field(..., example="OK") diff --git a/src/core/config.py b/src/core/config.py index 55d9be8..f9b5a06 100644 --- a/src/core/config.py +++ b/src/core/config.py @@ -1,10 +1,11 @@ -from pydantic_settings import BaseSettings import os -from src.app.controllers.bot_detector import BotDetector -from src.app.controllers.patreon import Patreon import dotenv from fastapi.templating import Jinja2Templates +from pydantic_settings import BaseSettings + +from src.app.controllers.bot_detector import BotDetector +from src.app.controllers.patreon import Patreon from src.core.fastapi.middelware import https_url_for dotenv.load_dotenv() diff --git a/src/core/server.py b/src/core/server.py index 2428d07..73b133f 100644 --- a/src/core/server.py +++ b/src/core/server.py @@ -2,9 +2,10 @@ from fastapi.middleware import Middleware from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import RedirectResponse +from fastapi.staticfiles import StaticFiles + from src import api from src.core.config import CONFIG -from fastapi.staticfiles import StaticFiles def init_routers(_app: FastAPI) -> None: diff --git a/src/templates/base.html b/src/templates/base.html index 4638f98..1e04a3e 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -13,7 +13,8 @@ - + @@ -38,7 +39,7 @@ {% block head %} - {% include 'head.html' %} + {% include 'head.html' %} {% endblock %} @@ -49,7 +50,8 @@ - + @@ -61,12 +63,12 @@ {% block header %} - {% include 'header.html' %} + {% include 'header.html' %} {% endblock %} {% block navigation %} - {% include 'navigation.html' %} + {% include 'navigation.html' %} {% endblock %} @@ -75,49 +77,51 @@ {% block footer %} - - {% endblock %} - + \ No newline at end of file diff --git a/src/templates/head.html b/src/templates/head.html index 3fa06f4..f3167dd 100644 --- a/src/templates/head.html +++ b/src/templates/head.html @@ -1,8 +1,8 @@ {% block head %} - - + + - - - -{% endblock %} + + + +{% endblock %} \ No newline at end of file diff --git a/src/templates/header.html b/src/templates/header.html index a964d73..783b382 100644 --- a/src/templates/header.html +++ b/src/templates/header.html @@ -1,5 +1,5 @@ {% block header %} -
- -
-{% endblock %} +
+ +
+{% endblock %} \ No newline at end of file diff --git a/src/templates/navigation.html b/src/templates/navigation.html index 7f42f81..e3476df 100644 --- a/src/templates/navigation.html +++ b/src/templates/navigation.html @@ -3,7 +3,8 @@
- @@ -14,9 +15,12 @@
- Support - - + Support + +
@@ -32,4 +36,4 @@
-{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/src/templates/pages/account_search.html b/src/templates/pages/account_search.html index 10575b2..067a955 100644 --- a/src/templates/pages/account_search.html +++ b/src/templates/pages/account_search.html @@ -18,7 +18,10 @@

Account Search

- If you would like to learn more about an Old School RuneScape account, type in the name below. We cannot provide information within 24 hours of a sighting of a player, therefore we cannot provide the latest locations and the latest gear information for an account. + If you would like to learn more about an Old School RuneScape account, type in the name + below. We cannot provide information within 24 hours of a sighting of a player, + therefore we cannot provide the latest locations and the latest gear information for an + account.


@@ -27,7 +30,8 @@

Account Search

- +

@@ -39,26 +43,26 @@

Account Search

{% if prediction %} -

Prediction

- {% endif %}
@@ -73,7 +77,9 @@

Prediction

Get notified about bans

- Discord Server + Discord Server

@@ -95,4 +101,4 @@

Get Bot -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/src/templates/pages/contact.html b/src/templates/pages/contact.html index 757ca7e..20722ed 100644 --- a/src/templates/pages/contact.html +++ b/src/templates/pages/contact.html @@ -18,7 +18,8 @@

Contact us

- If you're looking to get in touch with us, feel free to message any of the following links at your convenience.
+ If you're looking to get in touch with us, feel free to message any of the following links + at your convenience.
They are monitored on a weekly basis, and we will try to respond as quickly as we can!


@@ -30,15 +31,20 @@

Contact us

- - @Osrsbotdetector
- - Bot Detector Plugin Discord
- - osrsbotdetector@gmail.com
- - https://www.patreon.com/bot_detector
- - https://github.com/Bot-detector/
+ - @Osrsbotdetector
+ - Bot + Detector Plugin Discord
+ - osrsbotdetector@gmail.com
+ - https://www.patreon.com/bot_detector
+ - https://github.com/Bot-detector/

-{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/src/templates/pages/contributors.html b/src/templates/pages/contributors.html index f9d42cd..ea6d1a1 100644 --- a/src/templates/pages/contributors.html +++ b/src/templates/pages/contributors.html @@ -18,7 +18,13 @@

Contributors and Supporters

- Contributing to the OSRS Bot Detector plugin is a great way to support the Old School RuneScape community. By helping to identify and remove bots from the game, you can improve the overall gaming experience for all players. The Bot Detector plugin is an open-source project, allowing anyone to contribute to its development and make it even better. Join the team of contributors to use your skills and knowledge to make a real difference in the game and collaborate with other passionate gamers and developers who share your love for Old School RuneScape. + Contributing to the OSRS Bot Detector plugin is a great way to support the Old School + RuneScape community. By helping to identify and remove bots from the game, you can + improve the overall gaming experience for all players. The Bot Detector plugin is an + open-source project, allowing anyone to contribute to its development and make it even + better. Join the team of contributors to use your skills and knowledge to make a real + difference in the game and collaborate with other passionate gamers and developers who + share your love for Old School RuneScape.


@@ -33,11 +39,18 @@

Support us at

- Boost our server
- Join + Boost our server
+ Join - Help us financially
- Patreon + Help us + financially
+ Patreon @@ -55,7 +68,9 @@

Contribute

Code with us
- Our Repositories + Our Repositories @@ -73,7 +88,9 @@

Contribute

Get notified about bans

- Discord Server + Discord Server

@@ -95,4 +112,4 @@

Get Bot -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/src/templates/pages/faq.html b/src/templates/pages/faq.html index 7986141..d25af2a 100644 --- a/src/templates/pages/faq.html +++ b/src/templates/pages/faq.html @@ -15,423 +15,511 @@

Frequently asked Questions

Have a question about the plugin? We've answered most of them here! If your question still has not been answered - feel free to message us on - Discord. + + Discord.


-
-
-
-

- -

-
-
- The OSRS Bot Detector plugin is an open-source community-run machine learning plugin made for Old School - RuneScape using the popular third-party client RuneLite. The plugin aims to use machine learning algorithms to - separate players from bots and send likely bot accounts to Jagex's anti-cheating team for swift removal. +
+
+
+

+ +

+
+
+ The OSRS Bot Detector plugin is an open-source community-run machine + learning plugin made for Old School + RuneScape using the popular third-party client RuneLite. The plugin aims to use machine + learning algorithms to + separate players from bots and send likely bot accounts to Jagex's anti-cheating team for + swift removal. +
+
-
-
-
-
-

- -

-
-
- The OSRS Bot Detector plugin works by sending nearby players' information to our machine learning algorithm, - trained - with data provided by Jagex Moderators. The algorithm then processes this information and assesses it for - bot-like - behavior. If a player is determined to be a likely bot account, their information is sent to Jagex's - anti-cheating - team for swift removal. +
+
+

+ +

+
+
+ The OSRS Bot Detector plugin works by sending nearby players' information to our machine + learning algorithm, + trained + with data provided by Jagex Moderators. The algorithm then processes this information and + assesses it for + bot-like + behavior. If a player is determined to be a likely bot account, their information is sent + to Jagex's + anti-cheating + team for swift removal. +
+
+
+

Getting started

+

+ Installing the plugin +

+
+
    +
  1. +
    +
    Open Runelite
    + You can download from runelite.net or Oldschool RuneScape website +
    + 1 +
  2. +
  3. +
    +
    Click on the wrench icon in + top-right of the sidebar
    + This will open an additional menu +
    + 2 +
  4. +
  5. +
    +
    Click on the 3rd button on very top
    + This will open an RuneLite plugin hub. +
    + 3 +
  6. +
  7. +
    +
    Type in Bot Detector + like
    + This is our official plugin name. +
    + 4 +
  8. +
  9. +
    +
    Click install button at
    + Accept the warning message. (See the FAQ below if you have questions about this) +
    + 5 +
  10. +
  11. +
    +
    Done!
    + You have successfully installed our plugin and can conquer bots. +
    + 6 +
  12. +
+
+

Using the plugin

+

+ Plugin settings +

+
-
-
-

Getting started

-

- Installing the plugin -

-
-
    -
  1. -
    -
    Open Runelite
    - You can download from runelite.net or Oldschool RuneScape website -
    - 1 -
  2. -
  3. -
    -
    Click on the wrench icon in top-right of the sidebar
    - This will open an additional menu -
    - 2 -
  4. -
  5. -
    -
    Click on the 3rd button on very top
    - This will open an RuneLite plugin hub. -
    - 3 -
  6. -
  7. -
    -
    Type in Bot Detector like
    - This is our official plugin name. -
    - 4 -
  8. -
  9. -
    -
    Click install button at
    - Accept the warning message. (See the FAQ below if you have questions about this) -
    - 5 -
  10. -
  11. -
    -
    Done!
    - You have successfully installed our plugin and can conquer bots. -
    - 6 -
  12. -
-
-

Using the plugin

-

- Plugin settings -

-
-
-
+
- -
-
-

Setting type

-
-
-

Setting name

-
-
-

Description

-
-
+ +
+
+

Setting type

+
+
+

Setting name

+
+
+

Description

+
+
- -
-
-

Upload Settings

-
-
-

Anonymous Uploading

-
-
-

When enabled, your username will not be sent with your uploads. You also cannot manually flag players.

-
-
+ +
+
+

Upload Settings

+
+
+

Anonymous Uploading

+
+
+

When enabled, your username will not be sent with your uploads. You also cannot manually flag + players.

+
+
-
-
-

Upload Settings

-
-
-

Send Names Only After Logout

-
-
-

Recommended for players with low bandwidth.

-
-
+
+
+

Upload Settings

+
+
+

Send Names Only After Logout

+
+
+

Recommended for players with low bandwidth.

+
+
-
-
-

Upload Settings

-
-
-

Attempt Send on Close

-
-
-

Attempts to upload names when closing Runelite while being logged in. Take note that enabling this option may cause the client to take a long time to close if our servers are being unresponsive.

-
-
+
+
+

Upload Settings

+
+
+

Attempt Send on Close

+
+
+

Attempts to upload names when closing Runelite while being logged in. Take note that enabling + this option may cause the client to take a long time to close if our servers are being + unresponsive.

+
+
-
-
-

Upload Settings

-
-
-

Send Names Every x mins

-
-
-

Determines how often the information collected by the plugin is flushed to our servers. The maximum rate is once per 5 minutes.

-
-
+
+
+

Upload Settings

+
+
+

Send Names Every x mins

+
+
+

Determines how often the information collected by the plugin is flushed to our servers. The + maximum rate is once per 5 minutes.

+
+
-
-
-

Panel Settings

-
-
-

Prediction Autocomplete

-
-
-

Allows for prediction auto-completion for dialogue box entry.

-
-
+
+
+

Panel Settings

+
+
+

Prediction Autocomplete

+
+
+

Allows for prediction auto-completion for dialogue box entry.

+
+
-
-
-

Panel Settings

-
-
-

Show Breakdown in Special Cases

-
-
-

Displays the Prediction Breakdown when predicting certain types of accounts, such as ones with 'Stats Too Low'.

-
-
+
+
+

Panel Settings

+
+
+

Show Breakdown in Special Cases

+
+
+

Displays the Prediction Breakdown when predicting certain types of accounts, such as ones + with 'Stats Too Low'.

+
+
-
-
-

Panel Settings

-
-
-

Show Feedback Textbox

-
-
-

Adds a textbox to the prediction feedback panel, so you can explain your choice in up to 250 characters. Make sure you type your feedback before you make your choice!

-
-
+
+
+

Panel Settings

+
+
+

Show Feedback Textbox

+
+
+

Adds a textbox to the prediction feedback panel, so you can explain your choice in up to 250 + characters. Make sure you type your feedback before you make your choice!

+
+
-
-
-

Panel Settings

-
-
-

Panel Default Stats Tab

-
-
-

Sets panel default stats tab when the Plugin turns on.

-
-
+
+
+

Panel Settings

+
+
+

Panel Default Stats Tab

+
+
+

Sets panel default stats tab when the Plugin turns on.

+
+
-
+
-
-
-
-
-

- -

-
-
- The OSRS Bot Detector plugin is an open-source community-run machine learning plugin made for Old School - RuneScape using the popular third-party client RuneLite. The plugin aims to use machine learning algorithms to - separate players from bots and send likely bot accounts to Jagex's anti-cheating team for swift removal. -

The OSRS Bot Detector plugin has several settings that can be configured by the user. These include:

-
    -
  • Anonymous Uploading: When enabled, your username will not be sent with your uploads. You - also cannot manually flag players. -
  • -
  • Send Names Only After Logout: Recommended for players with low bandwidth.
  • -
  • Attempt Send on Close: Attempts to upload names when closing Runelite while being logged - in. Take note that enabling this option may cause the client to take a long time to close if our servers are - being unresponsive. -
  • -
  • Send Names Every x mins: Determines how often the information collected by the plugin is - flushed to our servers. The maximum rate is once per 5 minutes. -
  • -
  • Prediction Autocomplete: Allows for prediction auto-completion for dialogue box entry.
  • -
  • Show Breakdown in Special Cases: Displays the Prediction Breakdown when predicting certain - types of accounts, such as ones with 'Stats Too Low'. -
  • -
  • Show Feedback Textbox: Adds a textbox to the prediction feedback panel, so you can explain - your choice in up to 250 characters. Make sure you type your feedback before you make your choice! -
  • -
  • Panel Default Stats Tab: Sets panel default stats tab when the Plugin turns on.
  • -
+
+
+
+
+

+ +

+
+
+ The OSRS Bot Detector plugin is an open-source community-run machine + learning plugin made for Old School + RuneScape using the popular third-party client RuneLite. The plugin aims to use machine + learning algorithms to + separate players from bots and send likely bot accounts to Jagex's anti-cheating team for + swift removal. +

The OSRS Bot Detector plugin has several settings that can be configured by the user. + These include:

+
    +
  • Anonymous Uploading: When enabled, your username will not be sent + with your uploads. You + also cannot manually flag players. +
  • +
  • Send Names Only After Logout: Recommended for players with low + bandwidth.
  • +
  • Attempt Send on Close: Attempts to upload names when closing Runelite + while being logged + in. Take note that enabling this option may cause the client to take a long time to + close if our servers are + being unresponsive. +
  • +
  • Send Names Every x mins: Determines how often the information + collected by the plugin is + flushed to our servers. The maximum rate is once per 5 minutes. +
  • +
  • Prediction Autocomplete: Allows for prediction auto-completion for + dialogue box entry.
  • +
  • Show Breakdown in Special Cases: Displays the Prediction Breakdown + when predicting certain + types of accounts, such as ones with 'Stats Too Low'. +
  • +
  • Show Feedback Textbox: Adds a textbox to the prediction feedback + panel, so you can explain + your choice in up to 250 characters. Make sure you type your feedback before you make + your choice! +
  • +
  • Panel Default Stats Tab: Sets panel default stats tab when the Plugin + turns on.
  • +
+
-
-
-
-

- -

-
-
- Yes, the OSRS Bot Detector plugin is safe to use. It is an open-source community-run project and its code is - publicly available for review on GitHub. However, as with any third-party software, it is always a good idea to - exercise caution and use it at your own risk. +
+
+

+ +

+
+
+ Yes, the OSRS Bot Detector plugin is safe to use. It is an open-source community-run project + and its code is + publicly available for review on GitHub. However, as with any third-party software, it is + always a good idea to + exercise caution and use it at your own risk. +
-
-
-

- -

-
-
- There are several ways you can contribute to the OSRS Bot Detector plugin project. You can join the project's - Discord server to get involved in the community and provide feedback or suggestions. You can also support the - project on Patreon or contribute code to the project's GitHub repository. +
+

+ +

+
+
+ There are several ways you can contribute to the OSRS Bot Detector plugin project. You can + join the project's + Discord server to get involved in the community and provide feedback or suggestions. You can + also support the + project on Patreon or contribute code to the project's GitHub repository. +
-
-
-
-

- -

-
-
- The accuracy of the OSRS Bot Detector plugin depends on several factors, including the quality and quantity of - data used to train its machine learning algorithms and the effectiveness of those algorithms in identifying - bot-like behavior. The plugin's developers are constantly working to improve its accuracy by collecting more - data and refining its algorithms. +
+
+

+ +

+
+
+ The accuracy of the OSRS Bot Detector plugin depends on several factors, including the + quality and quantity of + data used to train its machine learning algorithms and the effectiveness of those algorithms + in identifying + bot-like behavior. The plugin's developers are constantly working to improve its accuracy by + collecting more + data and refining its algorithms. +
-
-
-
-

- -

-
-
- No, the OSRS Bot Detector plugin is not capable of detecting all types of bots. Some bots may use advanced - techniques to avoid detection, and it is always possible for new types of bots to emerge that the plugin is not - yet capable of detecting. However, the plugin's developers are constantly working to improve its ability to - detect a wide range of bot-like behavior. +
+
+

+ +

+
+
+ No, the OSRS Bot Detector plugin is not capable of detecting all types of bots. Some bots may + use advanced + techniques to avoid detection, and it is always possible for new types of bots to emerge that + the plugin is not + yet capable of detecting. However, the plugin's developers are constantly working to improve + its ability to + detect a wide range of bot-like behavior. +
-
-
-
-

- -

-
-
- Like any automated system, the OSRS Bot Detector plugin is not perfect and may occasionally produce false - positives or false negatives. Some players have expressed concern that certain types of accounts, such as - high-level 1 defense pures, may be more likely to be flagged as bots by the plugin due to their training - patterns[^1^][1]. The plugin's developers are aware of these concerns and are constantly working to improve the - accuracy of the plugin's algorithms. +
+
+

+ +

+
+
+ Like any automated system, the OSRS Bot Detector plugin is not perfect and may occasionally + produce false + positives or false negatives. Some players have expressed concern that certain types of + accounts, such as + high-level 1 defense pures, may be more likely to be flagged as bots by the plugin due to + their training + patterns[^1^][1]. The plugin's developers are aware of these concerns and are constantly + working to improve the + accuracy of the plugin's algorithms. +
-
-
-
-

- -

-
-
- Some players have expressed concern that botters may be able to use the open-source nature of the OSRS Bot - Detector plugin to learn how their accounts are being scored and adjust their behavior to reduce their profiling - score[^1^][1]. While this is a possibility, it is important to note that the plugin's developers are constantly - updating its algorithms and collecting new data to stay ahead of botting techniques. Additionally, Jagex's - anti-cheating team uses a variety of methods to detect and ban bots, so avoiding detection by the OSRS Bot - Detector plugin alone is not enough to guarantee that a bot account will not be banned +
+
+

+ +

+
+
+ Some players have expressed concern that botters may be able to use the open-source nature of + the OSRS Bot + Detector plugin to learn how their accounts are being scored and adjust their behavior to + reduce their profiling + score[^1^][1]. While this is a possibility, it is important to note that the plugin's + developers are constantly + updating its algorithms and collecting new data to stay ahead of botting techniques. + Additionally, Jagex's + anti-cheating team uses a variety of methods to detect and ban bots, so avoiding detection by + the OSRS Bot + Detector plugin alone is not enough to guarantee that a bot account will not be banned +
-
-
-
-

- -

-
-
- Some players have expressed concern that the OSRS Bot Detector plugin may be invasive because it collects and - sends information about nearby players to a third-party server for analysis. However, it is important to note - that the plugin only collects publicly available information, such as player names and stats from the hiscores. - Additionally, the plugin has settings that allow users to control what information is sent and when it is sent. - The plugin's developers are committed to protecting user privacy and ensuring that the plugin operates in a - transparent and responsible manner. +
+
+

+ +

+
+
+ Some players have expressed concern that the OSRS Bot Detector plugin may be invasive because + it collects and + sends information about nearby players to a third-party server for analysis. However, it is + important to note + that the plugin only collects publicly available information, such as player names and stats + from the hiscores. + Additionally, the plugin has settings that allow users to control what information is sent + and when it is sent. + The plugin's developers are committed to protecting user privacy and ensuring that the plugin + operates in a + transparent and responsible manner. +
-
-
-
-

- -

-
-
- Some players have expressed concern that the OSRS Bot Detector plugin could potentially hurt legitimate players - if it produces false positives and mistakenly flags them as bots. While this is a possibility, it is important - to note that Jagex's anti-cheating team uses a variety of methods to detect and ban bots, and a single flag from - the OSRS Bot Detector plugin alone is not enough to result in a ban. Additionally, the plugin's developers are - constantly working to improve its accuracy and reduce the likelihood of false positives. +
+
+

+ +

+
+
+ Some players have expressed concern that the OSRS Bot Detector plugin could potentially hurt + legitimate players + if it produces false positives and mistakenly flags them as bots. While this is a + possibility, it is important + to note that Jagex's anti-cheating team uses a variety of methods to detect and ban bots, and + a single flag from + the OSRS Bot Detector plugin alone is not enough to result in a ban. Additionally, the + plugin's developers are + constantly working to improve its accuracy and reduce the likelihood of false positives. +
-
-
-
+
+

-

- Some players have questioned the effectiveness of using machine learning algorithms to detect bot-like behavior, - given that some legitimate players may exhibit similar behavior patterns to bots on certain days. While it is - true that no automated system is perfect and there is always a possibility of false positives or false - negatives, machine learning algorithms have proven to be effective at detecting patterns and making predictions - in many different fields. The OSRS Bot Detector plugin's developers are constantly collecting new data and + Some players have questioned the effectiveness of using machine learning algorithms to detect + bot-like behavior, + given that some legitimate players may exhibit similar behavior patterns to bots on certain + days. While it is + true that no automated system is perfect and there is always a possibility of false positives + or false + negatives, machine learning algorithms have proven to be effective at detecting patterns and + making predictions + in many different fields. The OSRS Bot Detector plugin's developers are constantly collecting + new data and refining their algorithms to improve their accuracy in detecting bot-like behavior.
-
-
-
+ +
+
-{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/src/templates/pages/home.html b/src/templates/pages/home.html index 6faee7c..bb8057a 100644 --- a/src/templates/pages/home.html +++ b/src/templates/pages/home.html @@ -19,8 +19,15 @@

Bot Detector

- The Bot Detector Plugin is an open-source community-run machine learning plugin made for Old School RuneScape using the popular third-party client RuneLite.

We aim to use this plugin and the corresponding machine learning algorithms to separate players from bots, from a bird's eye view - and send likely bot accounts to Jagex's anti-cheating team for swift removal.

- If you're interested in supporting our efforts to combat botting in Old School RuneScape, consider joining our Discord community or making a donation to help fund the development of the Bot Detector Plugin. Every contribution helps us continue our work to make the game a better place for all players. + The Bot Detector Plugin is an open-source community-run machine learning plugin made for + Old School RuneScape using the popular third-party client RuneLite.

We aim to use + this plugin and the corresponding machine learning algorithms to separate players from + bots, from a bird's eye view - and send likely bot accounts to Jagex's anti-cheating + team for swift removal.

+ If you're interested in supporting our efforts to combat botting in Old School + RuneScape, consider joining our Discord community or making a donation to help fund the + development of the Bot Detector Plugin. Every contribution helps us continue our work to + make the game a better place for all players.


@@ -33,12 +40,18 @@

Bot Detector

-



Bot Detector stats

+



Bot Detector stats

-

Total bans
{{ '{:,}'.format(stats.total_bans) }}
-
Total real players
(manually flagged)
{{ '{:,}'.format(stats.total_real_players) }}
-
Total accounts
{{ '{:,}'.format(stats.total_accounts) }}
+
Total bans
{{ + '{:,}'.format(stats.total_bans) }}
+
Total real players
(manually + flagged)
{{ + '{:,}'.format(stats.total_real_players) }}
+
Total accounts
{{ + '{:,}'.format(stats.total_accounts) }}

@@ -48,7 +61,8 @@
Total accounts
{{ '{:,}'
-



Get Bot Detector

+



Get Bot Detector

Install plugin in RuneLite:


@@ -60,4 +74,4 @@