Hello I was trying to create a slack bot of mine. I was successful when I was working with plain JavaScript, but I decided to switch to ES5 for certain reasons. Though the client starts the rtm but is unable to authenticate using the websockets. I am adding my files below to demonstrate my code. Won't hesitate to upvote your answer, please help! Thanks! :)
Javascript
index.js
'use strict';
const service = require('../server/service');
const http = require('http');
const slackClient = require('../server/slackClient');
const server = http.createServer(service);
const slackToken = '-----SlackTokenHere----';
const slackLogLevel = 'verbose';
const rtm = slackClient.init(slackToken, slackLogLevel, witClient);
rtm.start();
slackClient.addAuthenticatedHandler(rtm, () => server.listen(3000));
server.on('listening', function() {
console.log(`Slackster is listening on ${server.address().port} in ${service.get('env')} mode.`);
});
slackClient.js
'use strict';
const RtmClient = require('@slack/client').RtmClient;
const CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
const RTM_EVENTS = require('@slack/client').RTM_EVENTS;
let rtm = null
let nlp = null
function handleOnAuthenticated(rtmStartData) {
console.log(`Logged in as ${rtmStartData.self.name} of team ${rtmStartData.team.name}, but not yet connected to a channel`);
}
function handleOnMessage(message) {
console.log(message);
}
function addAuthenticatedHandler(rtm, handler) {
rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, handler);
}
module.exports.init = function slackClient(token, logLevel, nlpClient) {
rtm = new RtmClient(token, {logLevel: logLevel});
nlp = nlpClient;
rtm.on(RTM_EVENTS.MESSAGE, handleOnMessage);
return rtm;
}
module.exports.addAuthenticatedHandler = addAuthenticatedHandler;
ES5
index.js
import http from 'http';
import express from 'express';
const server = http.createServer(express);
import slackClient from './Messenger_Clients/slackClient';
const slackToken = '------YourSlackToken------';
const slackLogLevel = 'verbose';
slackClient.init(slackToken, slackLogLevel, null);
slackClient.addAuthenticatedHandler(() => server.listen(3000));
server.on('listening', function() {
console.log(`Slackster is listening on ${server.address().port} in ${service.get('env')} mode.`);
});
slackClient.js
import { RtmClient } from '@slack/client';
import { CLIENT_EVENTS } from '@slack/client';
import { RTM_EVENTS } from '@slack/client';
class slackClient {
static init(token, logLevel, null) {
this.rtm = new RtmClient(token, {logLevel: logLevel});
this.nlp = nlpClient;
this.rtm.on(RTM_EVENTS.MESSAGE, this.handleOnMessage);
this.rtm.start();
}
static addAuthenticatedHandler(handler) {
this.rtm.on(CLIENT_EVENTS.RTM_AUTHENTICATED, handler);
}
handleOnMessage(message) {
console.log(message);
}
}
module.exports = slackClient;