DISCORD bot 제작

nodejs 2021. 10. 22. 23:48

DISCORD bot 제작

출처 :  https://mmsesang.tistory.com/19

 

nodejs 버전 14.10 설정

apt-get install build-essential libssl-dev
 


curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
 


source ~/.bashrc

 

nvm install 14.10.0

nvm use v14.10.0

nvm alias default v14.10.0
node --version

 

package.json

{
  "name": "bot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "discord.js": "^12.3.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

기본으로 npm install discord.js 설치한 13버전은 동작하지 않았슴

dependencies    discord버전을 12.3으로 명시해서

npm init

npm install을 하는게 좋음

 

 

index.js

const Discord = require("discord.js");
const config = require("./config.json");
const prefix = "!";


const client = new Discord.Client();


client.on("message", function(message) {
    // message 작성자가 봇이면 그냥 return
    if (message.author.bot) return;
    // message 시작이 prefix가 아니면 return
    if (!message.content.startsWith(prefix)) return;


    const commandBody = message.content.slice(prefix.length);
    const args = commandBody.split(' ');
    const command = args.shift().toLowerCase();
   
    if (command === "ping") {
        message.reply(`pong!`);
    } else if (command === "sum") {
        const numArgs = args.map(x => parseFloat(x));
        const sum = numArgs.reduce((counter, x) => counter += x);
        message.reply(`Sum result: ${sum}`);
    }
});


client.login(config.BOT_TOKEN);


config.json

{
    "BOT_TOKEN": "본인토큰값"
}

실행하기

root@server:~/bot# node index.js

 

!ping   명령어를 치면 

봇이 pong! 으로 응답하고

!sum 1 2 3  입력하면

Sum result : 6 반환한다.

다양한 봇을 작성할수가 있다.

 

 

 

 

 

'nodejs' 카테고리의 다른 글

nodejs so파일  (0) 2021.09.10
MongoError: Cannot use a session that has ended  (0) 2021.07.20
nodejs 버전 업데이트 하기  (0) 2021.07.15
nodemon 설정 방법  (0) 2020.12.09
axios 전송  (0) 2020.12.08
블로그 이미지

iesay

,

nodejs so파일

nodejs 2021. 9. 10. 14:55

출처 : https://github.com/node-ffi/node-ffi

디렉토리 생성

 

root@server:~/ffi-napi# node -v
v12.19.0

 

 

mkdir ffi-napi

cd ffi-napi

npm install ffi-napi

 

 

factorial.c

#include <stdio.h>


int factorial(int max) {
  int i = max;
  int result = 1;

  while (i >= 2) {
    result *= i--;
  }

  return result;
}

int main(void)
{
        printf("%d\n", factorial(6));
        return 0;
}

공유라이브러리 컴파일

gcc -shared -fpic factorial.c -o libfactorial.so

 

factorial.js

var ffi = require('ffi-napi');
var libfactorial = ffi.Library('./libfactorial', {
  'factorial': [ 'uint64', [ 'int' ] ]
})

if (process.argv.length < 3) {
  console.log('Arguments: ' + process.argv[0] + ' ' + process.argv[1] + ' <max>')
  process.exit()
}

var output = libfactorial.factorial(parseInt(process.argv[2]))

console.log('Your output: ' + output) 

 

실행 

root@server:~/ffi-napi# node factorial.js 3
Your output: 6
root@server:~/ffi-napi# node factorial.js 7
Your output: 5040

'nodejs' 카테고리의 다른 글

DISCORD bot 제작  (0) 2021.10.22
MongoError: Cannot use a session that has ended  (0) 2021.07.20
nodejs 버전 업데이트 하기  (0) 2021.07.15
nodemon 설정 방법  (0) 2020.12.09
axios 전송  (0) 2020.12.08
블로그 이미지

iesay

,

MongoError: Cannot use a session that has ended

종료된 세션을 사용 할수 없습니다.

 

출처 : https://stackoverflow.com/questions/59816298/how-to-fix-mongoerror-cannot-use-a-session-that-has-ended

원본코드

    } finally {
      await client.close();
    }

 

적용 후 

  } finally {
    //await client.close();
  }

Async로  close 함수가 먼저 실행되어 await를 붙여도 바로 실행 됨

'nodejs' 카테고리의 다른 글

DISCORD bot 제작  (0) 2021.10.22
nodejs so파일  (0) 2021.09.10
nodejs 버전 업데이트 하기  (0) 2021.07.15
nodemon 설정 방법  (0) 2020.12.09
axios 전송  (0) 2020.12.08
블로그 이미지

iesay

,

NVM 설치 

 

apt-get install build-essential libssl-dev
 


curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
 


source ~/.bashrc

 



v14.17.0버전 설치 


nvm install 14.17.0

nvm use v14.17.0

nvm alias default v14.17.0
node --version

'nodejs' 카테고리의 다른 글

nodejs so파일  (0) 2021.09.10
MongoError: Cannot use a session that has ended  (0) 2021.07.20
nodemon 설정 방법  (0) 2020.12.09
axios 전송  (0) 2020.12.08
web3.js 비동기 nodejs 함수 비교  (0) 2020.11.24
블로그 이미지

iesay

,

nodemon 설정 방법

nodejs 2020. 12. 9. 16:19

app.js 


var express = require('express');

var app = express();

var logger = require('morgan');


// router 설정

var indexRouter = require('./routes/index');


app.use(logger('dev'));

app.use(express.json());

app.use(express.urlencoded({ extended: false }));


// view 경로 설정

app.set('views', __dirname + '/views');


// 화면 engine을 html로 설정

app.set('view engine', 'html');

app.engine('html', require('ejs').renderFile);


// port setup

app.set('port', process.env.PORT || 3000);



// 기본 path를 /public으로 설정(css, javascript 등의 파일 사용을 위해)

app.use(express.static(__dirname + '/public'));


app.use('/', indexRouter);


module.exports = app;


var server = app.listen(app.get('port'), function() {

    console.log('Express server listening on port ' + server.address().port);

  });

 



노드몬 설치 후 실행 된다.

 #nodemon app.js


'nodejs' 카테고리의 다른 글

nodejs so파일  (0) 2021.09.10
MongoError: Cannot use a session that has ended  (0) 2021.07.20
nodejs 버전 업데이트 하기  (0) 2021.07.15
axios 전송  (0) 2020.12.08
web3.js 비동기 nodejs 함수 비교  (0) 2020.11.24
블로그 이미지

iesay

,

axios 전송

nodejs 2020. 12. 8. 10:43

form.html

 <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<form>

<span class="login100-form-title p-b-26">

Welcome </span>

<div class="wrap-input100 validate-input" data-validate="Valid email is: a@b.c">

<input class="input100" type="text" id="email" value="222@222.com">

</div>

<div class="wrap-input100 validate-input" data-validate="Enter password">

<span class="btn-show-pass">

<i class="zmdi zmdi-eye"></i>

</span>

<input class="input100" type="password" id="pass" value="@@@@@@@@@@">

</div>

<div class="container-login100-form-btn">

<div class="wrap-login100-form-btn">

<div class="login100-form-bgbtn">

</div>

<button class="login100-form-btn" onclick="login_click();">

Login </button>

</div>

</div>

</form>

<script>

function login_click()

{

var email = $("#email").val();

var pass =  $("#pass").val();

axios({

  method: 'post',

  url: '/login_auth',

  data: {

email: email,

pass: pass

  }

}).then(function (response) {

  console.log(response);

  })

  .catch(function (error) {

    console.log(error);

  });

}

</script>



jquery와 Axios를 활용한 form 값 전달





login_auth.js


router.post('/login_auth',async (req,res, bodyParser) => {

  var input_id = req.body.email;

  var input_pw = req.body.pass;

  console.log('  ',input_id);

  console.log('  ',input_pw); 

  res.json({ 'result' : 'true' });

})



data에 response값 전달

'nodejs' 카테고리의 다른 글

nodejs so파일  (0) 2021.09.10
MongoError: Cannot use a session that has ended  (0) 2021.07.20
nodejs 버전 업데이트 하기  (0) 2021.07.15
nodemon 설정 방법  (0) 2020.12.09
web3.js 비동기 nodejs 함수 비교  (0) 2020.11.24
블로그 이미지

iesay

,
변경 전

 MyContract.methods.totalSupply().call((err, result)=> {

   console.log("result : ", result);

 })



변경 후

const app = async () => {

  try {

      const result = await MyContract.methods.totalSupply().call();

      console.log("result : ", result);

  }catch (error) { console.log('Task Failure',error);

  }

};

app();


동일 하게 동작 한다.

변경 후 코드가 유지보수 하기 조금 더 쉽다.


'nodejs' 카테고리의 다른 글

nodejs so파일  (0) 2021.09.10
MongoError: Cannot use a session that has ended  (0) 2021.07.20
nodejs 버전 업데이트 하기  (0) 2021.07.15
nodemon 설정 방법  (0) 2020.12.09
axios 전송  (0) 2020.12.08
블로그 이미지

iesay

,