import sql from "../sql"; let _query_get = ` select item, rank() over (order by id), count(*) over (rows between unbounded preceding and unbounded following) as total from mcmaniacs order by {order} limit 1 `; let _query_add = ` insert into mcmaniacs (item) values ($1) on conflict do nothing `; export default async bot => { return [{ name: "mcmaniac_add", call: /Mc.*iaC/, set: "nxy", f: e => { const match = e.message.match(/(Mc\S+iaC?)/)[0]; sql.any(_query_add, [match]) .then() .catch(err => {}); } }, { name: "mcmaniac_get", call: /^(\.|\/)mcmaniac/i, set: "nxy", f: e => { const args = e.message.trim().substring(10); let order = "id asc" , offset , query = _query_get; if (args.length > 0) { if (isNaN(parseInt(args))) return e.reply("Mayonnaise ist keine Zahl du Pfosten."); const index = parseInt(args); if (index < 0) order = "id desc"; else if(index === 0) offset = 1; else offset = index; offset = Math.abs(index) - 1; query += " offset {offset}"; } else order = "random()"; query = query .split("{order}").join(order) .split("{offset}").join(offset); sql.any(query) .then(rows => { e.reply(`[${rows[0].rank}/${rows[0].total}] ${rows[0].item}`); }) .catch(err => { console.log(err); }); } }]; };