Skip to content

Instantly share code, notes, and snippets.

@TarasDev
Forked from jabczyk/knick-knack-bot.js
Created December 25, 2018 07:02
Show Gist options
  • Save TarasDev/b11c4e786b38ca8c5cb5f9faecf33951 to your computer and use it in GitHub Desktop.
Save TarasDev/b11c4e786b38ca8c5cb5f9faecf33951 to your computer and use it in GitHub Desktop.
Consumes all knick-knacks in Your steam inventory
/**
* Knick Knack Steam Bot
*
* Consumes all knick-knacks in Your steam inventory
*
* - Go to https://steamcommunity.com/my/inventory#753_6
* - Wait for inventory to load
* - Press F12
* - Paste the code in console tab
*
* (C) 2018
* https://steamcommunity.com/id/TolekCacek
* https://steamcommunity.com/tradeoffer/new/?partner=182084797&token=CKjX42cj
*/
/* global document, ShowTagFilters
g_strProfileURL, g_sessionID, $J,
ShowBlockingWaitDialog, ShowAlertDialog */
const NAME = 'Knick Knack Bot'
const FOOTER = '<br><small>by /id/TolekCacek</small>'
const DELAY = 0
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
function loadAllKnickKnacks() {
ShowTagFilters()
//document.querySelectorAll("label[for='tag_filter_753_6_item_class_item_class_6']")[0].click()
document.querySelector('input[tag_name="item_class_6"]').click()
const itemLinks = document.getElementsByClassName("inventory_item_link")
let ids = []
for(let i in itemLinks) {
const link = itemLinks[i]
if(typeof link !== 'object')
break
if(link.parentNode.parentNode.style.display === 'none')
continue
const id = link.href.split('_')[2]
ids.push(id)
}
return ids
}
loadAllKnickKnacks()
async function consumeKnickKnack(assetid) {
const url = g_strProfileURL + '/ajaxactivateconsumable/'
const params = {
sessionid: g_sessionID,
appid: 991980,
item_type: 127,
assetid,
actionparams: JSON.stringify({
"action": "consume_winter2018",
"message": "#Badge_Winter2018_ConsumeLipBalm"
})
}
try {
await $J.post(url, params)
return true
} catch (err) {
return false
}
}
function showConsumingModal(total, consumed, errors) {
const content = `
Consuming knick-knack ${consumed}/${total} (Errors: ${errors})
${FOOTER}`
ShowBlockingWaitDialog(NAME, content)
}
function showEndModal(total, consumed, errors) {
const content = `
Consumed ${consumed}/${total} knick-knacks (Errors: ${errors})
${FOOTER}`
ShowAlertDialog(NAME, content)
}
async function consumeAll() {
const ids = loadAllKnickKnacks()
let consumed = 0
let errors = 0
for(let i in ids) {
const success = await consumeKnickKnack(ids[i])
if(success)
consumed++
else
errors++
showConsumingModal(ids.length, consumed, errors)
await sleep(DELAY)
}
showEndModal(ids.length, consumed, errors)
}
consumeAll()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment