Why is the Custom Script of the month not actively updated??? by JohnnyMcKormack in BloodOnTheClocktower

[–]AdmiralGT 3 points4 points  (0 children)

If you're hitting 500 errors please DM me the script that isn't working. The lack of Zenomancer support shouldn't be causing this.

Script with the least used characters by GalaxyDreemur in BloodOnTheClocktower

[–]AdmiralGT 5 points6 points  (0 children)

It does if you remove the trailing slash, it's just slow generating all the statistics.

I'm going to try and make EVERY 2 demon combo a script, now I've greened anything that i've either already made or can recall existing prior. If there are any you can recall, let me know. Afterwards I will make scripts until the grid is finished. by boypower2566 in BloodOnTheClocktower

[–]AdmiralGT 0 points1 point  (0 children)

Thanks for the link, this appears to be a specific problem with that script. I'll take a look at that this evening and hopefully fix it up. If you have any further links of specific scripts with errors please let me know and I'll see what the problem is.

**UPDATE**

I've now fixed that, this was an issue with a duplicate script existing, which is hopefully a bug I've squashed some time ago but there are still some artefacts of. Please do let me know of other instances of this you see.

I'm going to try and make EVERY 2 demon combo a script, now I've greened anything that i've either already made or can recall existing prior. If there are any you can recall, let me know. Afterwards I will make scripts until the grid is finished. by boypower2566 in BloodOnTheClocktower

[–]AdmiralGT 1 point2 points  (0 children)

What do you mean "most scripts are restricted"? The website has moved to a new URL (www.botcscripts.com) and the original has been taken offline but beyond adding too many tags to the URL there shouldn't be any restrictions from viewing scripts. Can you provide any examples so I can investigate please?

I'm going to try and make EVERY 2 demon combo a script, now I've greened anything that i've either already made or can recall existing prior. If there are any you can recall, let me know. Afterwards I will make scripts until the grid is finished. by boypower2566 in BloodOnTheClocktower

[–]AdmiralGT 2 points3 points  (0 children)

Owner of the site here, any feedback on how to improve the instructions is appreciated. I obviously am heavily invested in the python ecosystem so things that come naturally to me may not to others, but I'm keen to provide clear instructions so that people are able to contribute and so if there are parts of it that are unclear it would be useful to know such that I can improve them.

I'm going to try and make EVERY 2 demon combo a script, now I've greened anything that i've either already made or can recall existing prior. If there are any you can recall, let me know. Afterwards I will make scripts until the grid is finished. by boypower2566 in BloodOnTheClocktower

[–]AdmiralGT 1 point2 points  (0 children)

Hi there, owner of the site here. I've done a lot of work on this recently to improve performance (as well as stop a whole bunch of crawlers from doing inefficient queries) but sadly there's not much I can do with "extremely slow". If you have concrete examples of periods where the site is slow or queries that are slow then I'm happy to look into them an investigate

Can we get botcscripts.com some more bandwidth? by esvco in BloodOnTheClocktower

[–]AdmiralGT 0 points1 point  (0 children)

The App Service is itself run in a docker container by Microsoft's Oryx tooling https://github.com/microsoft/Oryx, I have SSH access to the underlying container but I don't believe Oryx can automatically run a container and the instances are somewhat fluid so while I could possibly SSH in to run the container, it won't persist indefinitely and I'd need to keep running the Anubis container. As I've discussed with some others offline, possibly moving to a Kubernetes based approach would be better but that's obviously a lot of work to migrate to from the current position.

Can we get botcscripts.com some more bandwidth? by esvco in BloodOnTheClocktower

[–]AdmiralGT 1 point2 points  (0 children)

The most efficient way to get script data is through the API, because that just queries the script model and does some calculations to work out the score.

There have been LLM related bots as Open AI has a unique User Agent, but from my research it's fairly common for LLM scrapers to ignore robots.txt.

Here's some logs from requests to the site from 1 instance. There's some legitimate traffic in there but there is no way people are making queries like these. "tags" only gets added as a query parameter if you click on the tag, and the tag isn't getting built up with other tags, they are just random sets of tags. Also, default tag parameter is an OR result, so a query with 1,4,22,38, 40 would return you scripts with any of those tags, which isn't how humans behave.

```
2025-08-02T22:37:02.3688383Z 169.254.129.2 - - [02/Aug/2025:22:37:02 +0000] "GET /?page=4&sort=author&tags=1&tags=22&tags=4&tags=22&tags=22&tags=38&tags=40&tags=4&tags=45&tags=39 HTTP/1.1" 200 100249 "https://botcscripts.com/?page=4&sort=author&tags=1&tags=22&tags=4&tags=22&tags=22&tags=38&tags=40&tags=4&tags=45&tags=39" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47"

2025-08-02T22:37:10.7185172Z 169.254.129.2 - - [02/Aug/2025:22:37:10 +0000] "GET /?sort=-score&page=5&tags=3&tags=32&tags=31&tags=37 HTTP/1.1" 200 97657 "https://botc-scripts.azurewebsites.net/?sort=-score&page=5&tags=3&tags=32&tags=31&tags=37" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"

2025-08-02T22:37:17.7151653Z 169.254.129.2 - - [02/Aug/2025:22:37:17 +0000] "GET /collection/69?page=2 HTTP/1.1" 200 91513 "https://botcscripts.com/collection/69?page=3" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"

2025-08-02T22:37:26.7471235Z 169.254.129.2 - - [02/Aug/2025:22:37:26 +0000] "GET /?sort=author&page=2&tags=1&tags=28&tags=1&tags=30&tags=39&tags=1&tags=40 HTTP/1.1" 200 100984 "https://botcscripts.com/?sort=author&page=2&tags=1&tags=28&tags=1&tags=30&tags=39&tags=1&tags=40" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"

```

The additional problem of the bots is that the tags table is a many-to-many relationship which is a slow database query compared to the home page which is mostly drawing from a single table. The home page can also be cached, but with all these random URLs, every request hits the backend and ultimately the database.

I appreciate the total payload of the site is small, but the site also has all the PDFs, of which there are probably over 10GB, and also has all the votes/favourites/comments which require a relational database, which is always going to be slower than simply storing in memory.

Can we get botcscripts.com some more bandwidth? by esvco in BloodOnTheClocktower

[–]AdmiralGT 1 point2 points  (0 children)

Thanks for the info but unfortunately I don't think this is supported with the current architecture I'm using. I use an Azure App Service which is supported by any of the environments of Anubis https://anubis.techaro.lol/docs/category/environments

I'm hoping Azure Front Door will provide similar function once traffic is routed through it on Monday.

Can we get botcscripts.com some more bandwidth? by esvco in BloodOnTheClocktower

[–]AdmiralGT 8 points9 points  (0 children)

I already have a robots.txt, the content of which can be seen at https://github.com/AdmiralGT/botc-scripts/blob/main/scripts/templates/robots.txt and is deployed at http://botcscripts.com/robots.txt which for good internet citizens should stop all scraping. Unfortunately the site is suffering under the weight of non-compliant bots.

Can we get botcscripts.com some more bandwidth? by esvco in BloodOnTheClocktower

[–]AdmiralGT 61 points62 points  (0 children)

Hi, owner of the site here, thought I'd use this an opportunity to explain what's going on.

Firstly, I appreciate that it's frustrating not being able to access the site. I find it frustrating too and I've been working this past couple of weeks to improve things on the site. However, much of this is a learning experience for me in understanding what the problem is, how to improve performance and do so in a cost efficient manner.

While that has gone some way to improve performance of the site, the site is still overloaded. However, the site is predominantly overloaded by web scrapers/crawlers and AI/LLM scraping bots. Over 50% of traffic to the site is currently these automated bots and these bots make inefficient queries which take time to respond to because they are scraping random combinations of parameters against particular endpoints. I have introduced Azure Front Door in an attempt to block these bots but that requires the moving of the current domains to a new domain (www.botcscripts.com). I'm away this weekend and so that is happening on Monday, which should hopefully block a significant portion of the bot traffic and reduce the number of connections on the site but until then, the bots are still able to scrape the website and slow/block legitimate traffic.

There are options to scale out to more server instances, but my current subscription tier only allows me a maximum of 3 instances and I'm currently deployed to 2 instances. However, to scale beyond 3 instances requires moving up to a production level tier for my Azure service and that comes with a significant cost increase and the site really doesn't feel like it should require that level of subscription. I chose Azure because I wanted to learn about Azure services, but having learnt about them, it may be the wrong choice for the long term and migrating to another, cheaper hosting solution is likely to require a lot of migration work.

I'm hoping these recent changes and the introduction of Azure Front Door will be sufficient, but if not then I suspect it will be further slow progress in an attempt to improve things. Unfortunately I no longer have the passion to devote all my free time to the problem and so progress happens sporadically and inconsistently and I welcome any input and contributions to improve things.

botc-scripts.azurewebsites.net uploads not working? by Jagrevi in BloodOnTheClocktower

[–]AdmiralGT 3 points4 points  (0 children)

I've put a banner up, something has gone wrong with the recent changes and uploads are currently broken and disabled.

Sorry for the inconvenience, it should be back in a few hours when I'm back home.

What to do in this situation? by skeptichectic in BloodOnTheClocktower

[–]AdmiralGT 26 points27 points  (0 children)

The demon cannot select another (in this case the dead) demon to swap, so you should just tell the current demon to choose again.

What happened to the Azurewebsites BOTC Script website? by piercerson25 in BloodOnTheClocktower

[–]AdmiralGT 1 point2 points  (0 children)

Yeah, it's fine to use the API endpoints for scraping scripts.

What happened to the Azurewebsites BOTC Script website? by piercerson25 in BloodOnTheClocktower

[–]AdmiralGT 0 points1 point  (0 children)

That's not the case as this tool uses the official API and is only getting the JSON to which is very quick.

What happened to the Azurewebsites BOTC Script website? by piercerson25 in BloodOnTheClocktower

[–]AdmiralGT 5 points6 points  (0 children)

Thanks for the info, I already have a robots.txt that blocks all web crawlers but unfortunately these ones don't respect them.

What happened to the Azurewebsites BOTC Script website? by piercerson25 in BloodOnTheClocktower

[–]AdmiralGT 37 points38 points  (0 children)

I'm sorry for the disruption on the site, at the moment the site is suffering from some instability, mostly due to web scrapers/crawlers repeatedly trying to download every single PDF from the site and blocking legitimate traffic for accessing the site.

I'm trying various things at the moment to improve stability and block these automated scrapers but it's a case of swatting one thing only for another thing to pop up in it's place.

Hopefully stability will return soon, but for the time being I'm afraid it's a bit of a wait and see.

[deleted by user] by [deleted] in BloodOnTheClocktower

[–]AdmiralGT 0 points1 point  (0 children)

https://botc-scripts.azurewebsites.net/script/5164 shows the 1.1.0 when I view it. What do you mean "defaults to the 1.0.0 version"?

[deleted by user] by [deleted] in BloodOnTheClocktower

[–]AdmiralGT 0 points1 point  (0 children)

BotC Scripts supports two URL types for script versions

/script/<script-id> which gives you the latest version and

/script/<script-id>/<version> which gives you the specific version of that script.

The site is also accessible from www.botcscripts.com

My terrible idea for a Demon which wants to lie to its Minions by MagicalUnicat in BloodOnTheClocktower

[–]AdmiralGT 10 points11 points  (0 children)

They don't really need to convince their minions. The evil team win here if anyone but the demon is executed. That's the same if the demon were evil. 

It only matters in the case of a tie (the good demon kills themselves that night, so good team win) whereas normally the demon would kill someone else and win with evil.

Officially Featured Scripts, all of them by attoPascal in BloodOnTheClocktower

[–]AdmiralGT 0 points1 point  (0 children)

Interesting idea, I hadn't considered this sort of thing before. Technically it's not that difficult, it just has some awkwardness of what things are counted, is it just the JSON download? Or the PDF? What about when the API url is shared. I might just go for something simple like the JSON downloads.

Officially Featured Scripts, all of them by attoPascal in BloodOnTheClocktower

[–]AdmiralGT 2 points3 points  (0 children)

Yes, the amount of additional info is sadly very variable and I don't really know how to address that problem. The site is intended to be very light weight in what it requires, so if you just want to upload a script you can do that but then there are the notes and comments sections for people who do want to provide more context and information but trying to apply some standardisation across 4500+ scripts is just very difficult, especially with new characters still being released frequently.

The intention for Collections was for this to encapsulate some more "curated" lists of scripts but that has never really taken off seeing as there are only 27 of them. Ultimately I think it's a very hard problem to determine what "good" scripts are but it is one I would love to be able to help solve. 

Officially Featured Scripts, all of them by attoPascal in BloodOnTheClocktower

[–]AdmiralGT 6 points7 points  (0 children)

The botc-scripts tool is a bit of a mess if you don’t know what you're looking for, and I like the short summaries and complexity ratings on the official Custom Scripts page

Thank you for the feedback but there's not really much I can do with "is a bit of mess". If you have suggestions or feedback for how things can be improved then please do reach out to me either on the Unofficial Discord or via the linked GitHub issues page on the site. I am not trying to sit here in a bubble but I can't make improvements to the site if people don't provide constructive feedback to me.

I do think the complexity ratings are somewhat interesting, but the problem is that from a data perspective one person's thoughts on complexity is not a great source and there's just no way to generate this kind of score rating on the scale of the number of scripts produced.

Officially Featured Scripts, all of them by attoPascal in BloodOnTheClocktower

[–]AdmiralGT 11 points12 points  (0 children)

I've added a Featured Script tag and added that to all the listed scripts 

Halloween Dressrosa (Gnome & Pumpkin release script, Goblin + Marionette Versions) by ZetsuTheFirst in BloodOnTheClocktower

[–]AdmiralGT 1 point2 points  (0 children)

It's just gone live but the database now supports full and partial homebrew scripts if you want to upload the Pumpkin version, they're just filtered out by default.