108 lines
4.0 KiB
JavaScript
108 lines
4.0 KiB
JavaScript
exports.newSocialBotsBotModulesTwitterBot = function (processIndex) {
|
|
|
|
const MODULE_NAME = 'Twitter Bot'
|
|
|
|
let thisObject = {
|
|
taskParameters: undefined,
|
|
format: undefined,
|
|
twitterClient: undefined,
|
|
sendMessage: sendMessage,
|
|
initialize: initialize,
|
|
finalize: finalize
|
|
}
|
|
|
|
return thisObject
|
|
|
|
function initialize(config) {
|
|
/* Twitter Bot Initialization */
|
|
var Twitter = SA.nodeModules.twitter
|
|
|
|
let consumer_key = config.consumer_key
|
|
let consumer_secret = config.consumer_secret
|
|
let access_token_key = config.access_token_key
|
|
let access_token_secret = config.access_token_secret
|
|
|
|
if (process.env.TWITTER_CONSUMER_KEY) {
|
|
consumer_key = process.env.TWITTER_CONSUMER_KEY
|
|
}
|
|
if (process.env.TWITTER_CONSUMER_SECRET) {
|
|
consumer_secret = process.env.TWITTER_CONSUMER_SECRET
|
|
}
|
|
if (process.env.TWITTER_ACCESS_TOKEN_KEY) {
|
|
access_token_key = process.env.TWITTER_ACCESS_TOKEN_KEY
|
|
}
|
|
if (process.env.TWITTER_ACCESS_TOKEN_SECRET) {
|
|
access_token_secret = process.env.TWITTER_ACCESS_TOKEN_SECRET
|
|
}
|
|
|
|
if (!consumer_key) {
|
|
logError("consumer_key must be set")
|
|
}
|
|
if (!consumer_secret) {
|
|
logError("consumer_secret must be set")
|
|
}
|
|
if (!access_token_key) {
|
|
logError("access_token_key must be set")
|
|
}
|
|
if (!access_token_secret) {
|
|
logError("access_token_secret must be set")
|
|
}
|
|
var twitterClient = new Twitter({
|
|
consumer_key: consumer_key,
|
|
consumer_secret: consumer_secret,
|
|
access_token_key: access_token_key,
|
|
access_token_secret: access_token_secret
|
|
});
|
|
thisObject.twitterClient = twitterClient
|
|
|
|
try {
|
|
thisObject.taskParameters = {
|
|
exchange: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.name,
|
|
market: `${TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName}/${TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.quotedAsset.referenceParent.config.codeName}`
|
|
}
|
|
if (config.format === undefined) {
|
|
thisObject.format = "%{MESSAGE}"
|
|
} else {
|
|
thisObject.format = config.format
|
|
}
|
|
} catch (err) {
|
|
logError("initialize -> err = " + err.stack);
|
|
}
|
|
}
|
|
|
|
function finalize() {}
|
|
|
|
function sendMessage(message) {
|
|
try {
|
|
message = {status: formatMessage(message)}
|
|
} catch (err) {
|
|
logError("announce -> Twitter JSON message error -> err = " + err)
|
|
}
|
|
console.log(thisObject.twitterClient)
|
|
|
|
thisObject.twitterClient.post('statuses/update', message, function(error) {
|
|
if(error) {
|
|
logError(error)
|
|
throw error
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function formatMessage(message) {
|
|
formattedMessage = thisObject.format
|
|
formattedMessage = formattedMessage.replace('%{EXCHANGE}', thisObject.taskParameters.exchange)
|
|
formattedMessage = formattedMessage.replace('%{MARKET}', thisObject.taskParameters.market)
|
|
formattedMessage = formattedMessage.replace('%{MESSAGE}', message)
|
|
return formattedMessage
|
|
}
|
|
|
|
function logWarn(message) {
|
|
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[WARN] ' + message)
|
|
}
|
|
|
|
function logError(message) {
|
|
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[ERROR] ' + message)
|
|
}
|
|
}
|