NightDev Community Forums

[CustomAPI] Quote system


double checked, yes, it may however be a different token on addquote and delquote/purge, could that be an issue?


You can use this tool developed by ehsankia to check what public token is paired with your private token:

Replace PRIVATE_TOKEN with your private token (16 characters long).


Thanks for the check tool, I was indeed adding with a different token than trying to delete, remade all 3 commands and it all works good now :slight_smile:


what i need to do for personal quotes for each user in my channel? (generate a personal token when its used for first time), its possible?, and how?



No need to generate new tokens. If you want to add someone’s name to a quote, just do something like this:

!addquote [some quote] - [name of whoever said the quote]


Hi, I’ve been asked to create a command in a channel which uses this quote API.

The command in question inserts a random quote from that channel’s quote list in the middle of a name provided, as though it were using the quote as a nickname. For example, if a user types:
!aka John Smith
Nightbot would return:
John “[quote]” Smith

I’ve tried to test a version of this in my own channel, but did so using the token of the channel I’m creating it for, which I assume is the reason it has not worked; on first use, it returned, “[other channel] is not defined” and on every subsequent use it returned, “Right-hand side of ‘instanceof’ is not an object”.

The command is as follows, split for greater legibility:

c=$(urlfetch********&no_id=1 );
d=(a[0] + ’ “’ + c+ '” ');

Is this a valid command, or is there a way I could implement this in this streamer’s channel?



!addcom -cd=5 !aka $(eval a=decodeURIComponent(`$(querystring)`).split(` `);if(a.length>1){a.splice(1,0,`$(urlfetch********&no_id=1)`);a.join(` `);}else{`Enter at least a first and last name!`;})


That’s wonderful, thank you!
Is there a way to also add in “quotation marks” to the quote being added (without adding space between them and the quote message)? I tried a couple methods that I thought would work, but they all give me an error.


Just put in quotation marks inside the string:

!addcom -cd=5 !aka $(eval a=decodeURIComponent(`$(querystring)`).split(` `);if(a.length>1){a.splice(1,0,`"$(urlfetch********&no_id=1)"`);a.join(` `);}else{`Enter at least a first and last name!`;})


That makes sense, I didn’t understand what the ` symbol really meant in JS but I’ve read up and now that makes sense. Thank you again.


I hate to be a bother and I do apologise, but I’ve added more functionality and have not been able to figure out why this isn’t working.

A lot of the quotes in question are added with pretty inconsistent formatting, some have attributions, some have gratuitous quotation marks and some have none. I want to do two things: (1) remove final instances of ’ -’ and chop off the rest of the quote from that point, and (2) remove all instances of the " character in the quote. Here’s what I have:

!addcom !aka $(eval a=decodeURIComponent($(querystring)).split();b=`$(urlfetch********&no_id=1 )`;c=b.lastIndexOf(’ -’);d=’’;if(c>0){d=b.substr(0,c);}else{d=b;}d.replace(/"/g, ‘’);if(a.length>1){a.splice(1,0,`"${d}"`);a.join(` `);}else{`${a}, a.k.a. “${d}”`;})

Anyone’s help would be greatly appreciated.

$(eval a=decodeURIComponent(`$(querystring)`).split(` `);b=`$(urlfetch********&no_id=1)`.replace(/[“”"]/g,``);c=b.lastIndexOf(` -`);b=c>-1?b.slice(0,c):b;if(a.length>1){a.splice(1,0,`"${b}"`);a.join(` `);}else{a[0]!=``?`${a}, a.k.a. "${b}"`:`Missing input!`;})


Thanks so much! I put this in (with the appropriate token) and I still got “Right-hand side of ‘instanceof’ is not an object” however.


The command, for reasons I am not sure of yet, must be edited through the dashboard instead of chat.


Out of curiosity, would there be a way to edit the url nested in the b variable based on arguments passed to the command? I am thinking of how to add &data=(final argument) if that final argument is a number. I thought of how I would do this, but could not fit it into the message field as it’s too long.



The following setup uses two commands, !aka and _aka, with !aka aliased to _aka:

!addcom -cd=5 !aka -a=_aka $(eval a=decodeURIComponent(`$(querystring)`).split(` `);b=parseInt(a[a.length-1]).toString();if(b==a[a.length-1]){a.unshift(b);a.pop();}else{a.unshift(`#`);}a.join(` `))

!addcom -cd=5 _aka $(eval try{a=decodeURIComponent(`$(querystring)`).split(`$(1) `)[1].split(` `);b=`$(urlfetch********&no_id=1&data=$(1))`;b=b==`No matching entry found`?`$(urlfetch********&no_id=1)`:b;b=b.replace(/[“”"]/g,``);c=b.lastIndexOf(` -`);b=c>-1?b.slice(0,c):b;if(a.length>1){a.splice(1,0,`"${b}"`);a.join(` `);}else{`${a}, a.k.a. "${b}"`;}}catch(e){`Missing input!`;})

!aka [name] [optional quote list index number]

If the input index number is larger than the quote list size, a nickname will be chosen at random.


Thank you! I tried to test this in my channel and I’m getting the following error report:

The reason for the !editcom was to add a space in between -a=_aka and $(eval in the first command.


I tried adding the commands both through chat and through the dashboard. !aka can be added through chat, but _aka must be added through the dashboard.


You are incredible. Thank you. Mind if I ask what arguments exactly !aka is passing to _aka here? I may want to create a couple of other aliases for more specific names.


Oh also! I was running a few more test cases and is it possible to get Nightbot to give the error message when !aka is called by itself with no arguments?

I couldn’t tell what would need to be changed, sadly.

This is not that big a deal of course, just asking if there’s a quick fix!