Node.Js의 Twitter 봇
22935 단어 nodetwitterjavascriptbeginners
소셜 미디어에서 일부 항목을 자동화하는 방법에 대해 궁금해하셨을 것입니다. 그럼 몇 가지를 해보겠습니다.
이 봇을 사용하여 우리를 팔로우하거나 트윗을 좋아하는 모든 사람에게 DM을 보낼 것입니다. 여기에서는 계정에서 팔로우 및 좋아요 이벤트를 사용하기 위해 를 사용할 것입니다.
섹션-0: 환경 설정
STEP-0: Twitter 계정을 만들고(또는 기존 계정을 사용) 다음으로 이동하여 앱을 추가합니다.
추신 봇을 배포할 별도의 계정을 만드는 것이 좋습니다.
1단계: 앱으로 이동하여 키 및 토큰 섹션에서 팔로우하세요.
(앱에서 발생하는 이벤트를 사용하기 위해 웹후크를 등록하려면 콜백 URL이 필요합니다. 자세히 알아보기)
2단계: Node.js에서 Twitter API를 사용하려면 다음 종속성을 설치합니다.
3단계: 다운로드 및 설치
ngrok
를 통해 로컬 포트에 대한 HTTPS URL을 얻고 Heroku에 배포하기 전에 봇이 작동하는지 확인합니다.섹션-1: API 키 보안
STEP-0: 먼저 bot.js 파일을 앱의 진입점으로 만듭니다. 그런 다음 twitter-lite
npm 패키지를 사용하여 Twitter 끝점과 상호 작용합니다.
1단계: 이제ngrok
를 열고 로컬 포트 3004에 대한 HTTPS URL을 가져와 섹션 1에서 얻은 토큰과 함께 URL을 .env 파일에 붙여넣습니다.
2단계: .env 파일을 만들어 Section-0에서 모든 민감한 정보를 입력합니다.
API_KEY=xIrIqvysinxgrSPm0Ir1D0cIF
API_SECRET_KEY=DjIMhoxJlRCxbgtw1zXdiGuKE4IjmjlAmnvB6orus24jbzmNof
ACCESS_TOKEN=1017764619337646080-3FrdsqhBLgVGDRAPEiy2a3fI7bY8Tv
ACCESS_TOKEN_SECRET=sRRfI6osPcvnwoHTY8UIA8y2hsI40kMltauL4xspAuMfr
ENVIRONMENT=dev
ROUTE=/callback-url
BEARER_TOKEN=AAAAAAAAAAAAAAAAAAAAACXW7gAAAAAA%2BbYioHfLTHR7Mf%2FnkpApHx1%2B%2FH0%3D5I7kLqCm5ejYNp5XoG8SbR96YoWxP3Po1J1RhyHwgPwj8E4rr8
SERVER_URL=https://fbc5f7e2c77f.ngrok.io
추신 이것은 섹션의 제목을 아이러니하게 만들지 만 어쨌든 앞으로 나아가십시오. 다루어야 할 것이 많습니다. 이미 토큰 BTW를 변경했습니다.
STEP-3: 환경 변수를 읽기 위한 config.js를 만듭니다.
module.exports.twitter = {
consumer_key: `${process.env.API_KEY}`,
consumer_secret: `${process.env.API_SECRET_KEY}`,
access_token_key: `${process.env.ACCESS_TOKEN}`,
access_token_secret: `${process.env.ACCESS_TOKEN_SECRET}`,
}
module.exports.webhooks = {
serverUrl: `${process.env.SERVER_URL}`,
route: `${process.env.ROUTE}`,
consumerKey: `${process.env.API_KEY}`,
consumerSecret: `${process.env.API_SECRET_KEY}`,
accessToken: `${process.env.ACCESS_TOKEN}`,
accessTokenSecret: `${process.env.ACCESS_TOKEN_SECRET}`,
environment: `${process.env.ENVIRONMENT}`,
}
module.exports.webhooksUserActivity = {
accessToken: `${process.env.ACCESS_TOKEN}`,
accessTokenSecret: `${process.env.ACCESS_TOKEN_SECRET}`,
}
섹션-2: 코드
STEP-0: 다음 코드에서 계정의 사용자 ID를 얻은 다음 twitter-webhooks
패키지를 사용하여 웹후크를 등록하여 계정에서 팔로우 및 _좋아하는 트윗_ 이벤트를 수신합니다. bot.js에 다음 코드를 붙여넣습니다.
require('dotenv').config()
const express = require('express')
const Twitter = require('twitter-lite')
const twitterWebhooks = require('twitter-webhooks')
const { twitter, webhooks, webhooksUserActivity } = require('./config')
const twitterLiteClient = new Twitter({ ...twitter })
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
const userActivityWebhook = twitterWebhooks.userActivity({
...webhooks,
app,
})
;(async function () {
// get user id
const result = await twitterLiteClient.get('users/lookup', {
screen_name: '<twitter id of your app>',
})
const userId = result[0].id_str
// get webhooks
const webhooksResult = await userActivityWebhook.getWebhooks()
if (webhooksResult.environments[0].webhooks.length !== 0) {
// unregister earlier webhook
const webhookId = webhooksResult.environments[0].webhooks[0].id
await userActivityWebhook.unregister({
webhookId,
})
}
//Register your webhook url - just needed once per URL
await userActivityWebhook.register()
//Subscribe for a particular user activity
userActivityWebhook
.subscribe({
...webhooksUserActivity,
userId,
})
.then(function (userActivity) {
userActivity
.on('follow', data => console.log(userActivity.id + ' - follow'))
.on('favourite', data =>
console.log(userActivity.id + 'favourite')
)
})
.catch(console.error)
})()
app.listen(process.env.PORT || 3004)
1단계: 이제 웹후크를 연결하고 이벤트 수신을 시작했으면 twitter-lite
패키지를 사용하여 계정에서 몇 가지 활동을 수행해 보겠습니다. 여기서는 새로운 팔로워나 트윗을 좋아하는 사용자에게 DM을 보내서 인사하고 있습니다.
userActivityWebhook
.subscribe({
...webhooksUserActivity,
userId,
})
.then(function (userActivity) {
userActivity
.on('follow', async data => {
const followerName = data.source.screen_name
const followerId = data.source.id
console.log(`\n ${followerName} followed you \n`)
try {
await twitterLiteClient.post('direct_messages/events/new', {
event: {
type: 'message_create',
message_create: {
target: {
recipient_id: followerId,
},
message_data: {
text: `Hey ${followerName}! Thanks for following. You are awesome`,
},
},
},
})
} catch (err) {
console.error(err)
}
})
.on('favorite', async data => {
console.log(JSON.stringify(data))
const followerName = data.user.screen_name
const followerId = data.user.id_str
console.log(`\n ${followerName} liked a tweet\n`)
try {
await twitterLiteClient.post('direct_messages/events/new', {
event: {
type: 'message_create',
message_create: {
target: {
recipient_id: followerId,
},
message_data: {
text: `Hey ${followerName}! Thanks for liking the tweet`,
},
},
},
})
} catch (err) {
console.error(err)
}
})
})
.catch(console.error)
3단계: 실행node bot.js
을 실행하여 로컬에서 실행하고 개인 계정에서 봇을 팔로우하면 봇에서 DM을 받게 됩니다.
P.S.: 슬픈 부분은 무료 계정의 경우 24시간 창에서 5개의 DM만 보낼 수 있다는 것입니다. 그러나 훨씬 더 큰 캡으로 많은 다른 작업을 수행할 수 있습니다.
지금까지 달성한 하이파이브.
Heroku에 배포합니다.
Reference
이 문제에 관하여(Node.Js의 Twitter 봇), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/neer17/twitter-bot-in-node-js-329
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
API_KEY=xIrIqvysinxgrSPm0Ir1D0cIF
API_SECRET_KEY=DjIMhoxJlRCxbgtw1zXdiGuKE4IjmjlAmnvB6orus24jbzmNof
ACCESS_TOKEN=1017764619337646080-3FrdsqhBLgVGDRAPEiy2a3fI7bY8Tv
ACCESS_TOKEN_SECRET=sRRfI6osPcvnwoHTY8UIA8y2hsI40kMltauL4xspAuMfr
ENVIRONMENT=dev
ROUTE=/callback-url
BEARER_TOKEN=AAAAAAAAAAAAAAAAAAAAACXW7gAAAAAA%2BbYioHfLTHR7Mf%2FnkpApHx1%2B%2FH0%3D5I7kLqCm5ejYNp5XoG8SbR96YoWxP3Po1J1RhyHwgPwj8E4rr8
SERVER_URL=https://fbc5f7e2c77f.ngrok.io
module.exports.twitter = {
consumer_key: `${process.env.API_KEY}`,
consumer_secret: `${process.env.API_SECRET_KEY}`,
access_token_key: `${process.env.ACCESS_TOKEN}`,
access_token_secret: `${process.env.ACCESS_TOKEN_SECRET}`,
}
module.exports.webhooks = {
serverUrl: `${process.env.SERVER_URL}`,
route: `${process.env.ROUTE}`,
consumerKey: `${process.env.API_KEY}`,
consumerSecret: `${process.env.API_SECRET_KEY}`,
accessToken: `${process.env.ACCESS_TOKEN}`,
accessTokenSecret: `${process.env.ACCESS_TOKEN_SECRET}`,
environment: `${process.env.ENVIRONMENT}`,
}
module.exports.webhooksUserActivity = {
accessToken: `${process.env.ACCESS_TOKEN}`,
accessTokenSecret: `${process.env.ACCESS_TOKEN_SECRET}`,
}
STEP-0: 다음 코드에서 계정의 사용자 ID를 얻은 다음
twitter-webhooks
패키지를 사용하여 웹후크를 등록하여 계정에서 팔로우 및 _좋아하는 트윗_ 이벤트를 수신합니다. bot.js에 다음 코드를 붙여넣습니다.require('dotenv').config()
const express = require('express')
const Twitter = require('twitter-lite')
const twitterWebhooks = require('twitter-webhooks')
const { twitter, webhooks, webhooksUserActivity } = require('./config')
const twitterLiteClient = new Twitter({ ...twitter })
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
const userActivityWebhook = twitterWebhooks.userActivity({
...webhooks,
app,
})
;(async function () {
// get user id
const result = await twitterLiteClient.get('users/lookup', {
screen_name: '<twitter id of your app>',
})
const userId = result[0].id_str
// get webhooks
const webhooksResult = await userActivityWebhook.getWebhooks()
if (webhooksResult.environments[0].webhooks.length !== 0) {
// unregister earlier webhook
const webhookId = webhooksResult.environments[0].webhooks[0].id
await userActivityWebhook.unregister({
webhookId,
})
}
//Register your webhook url - just needed once per URL
await userActivityWebhook.register()
//Subscribe for a particular user activity
userActivityWebhook
.subscribe({
...webhooksUserActivity,
userId,
})
.then(function (userActivity) {
userActivity
.on('follow', data => console.log(userActivity.id + ' - follow'))
.on('favourite', data =>
console.log(userActivity.id + 'favourite')
)
})
.catch(console.error)
})()
app.listen(process.env.PORT || 3004)
1단계: 이제 웹후크를 연결하고 이벤트 수신을 시작했으면
twitter-lite
패키지를 사용하여 계정에서 몇 가지 활동을 수행해 보겠습니다. 여기서는 새로운 팔로워나 트윗을 좋아하는 사용자에게 DM을 보내서 인사하고 있습니다.userActivityWebhook
.subscribe({
...webhooksUserActivity,
userId,
})
.then(function (userActivity) {
userActivity
.on('follow', async data => {
const followerName = data.source.screen_name
const followerId = data.source.id
console.log(`\n ${followerName} followed you \n`)
try {
await twitterLiteClient.post('direct_messages/events/new', {
event: {
type: 'message_create',
message_create: {
target: {
recipient_id: followerId,
},
message_data: {
text: `Hey ${followerName}! Thanks for following. You are awesome`,
},
},
},
})
} catch (err) {
console.error(err)
}
})
.on('favorite', async data => {
console.log(JSON.stringify(data))
const followerName = data.user.screen_name
const followerId = data.user.id_str
console.log(`\n ${followerName} liked a tweet\n`)
try {
await twitterLiteClient.post('direct_messages/events/new', {
event: {
type: 'message_create',
message_create: {
target: {
recipient_id: followerId,
},
message_data: {
text: `Hey ${followerName}! Thanks for liking the tweet`,
},
},
},
})
} catch (err) {
console.error(err)
}
})
})
.catch(console.error)
3단계: 실행
node bot.js
을 실행하여 로컬에서 실행하고 개인 계정에서 봇을 팔로우하면 봇에서 DM을 받게 됩니다.P.S.: 슬픈 부분은 무료 계정의 경우 24시간 창에서 5개의 DM만 보낼 수 있다는 것입니다. 그러나 훨씬 더 큰 캡으로 많은 다른 작업을 수행할 수 있습니다.
지금까지 달성한 하이파이브.
Heroku에 배포합니다.
Reference
이 문제에 관하여(Node.Js의 Twitter 봇), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/neer17/twitter-bot-in-node-js-329텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)