我如何通过我的 discord 机器人和网站(以及我的 discord 机器人中的 get/store 数据)进行交流
How do I communicate through my discord bot and website (and get/store data in my discord bot)
我正在尝试制作一个 Discord 机器人,每当您 press/do 网站上的内容时,它 与机器人通信 ,并且 发送data 给它。有人有什么建议吗?这是我的 GitHub 托管网站上其中一个页面的一些代码:
<html>
<!–- Website Stuff -–>
<button onclick="share()">Share</button>
<p id="sharedtext"></p>
<script>
function share() {
var projectID = prompt('Whats the project ID of your scratch project?')
<!-- Send data to bot -->
document.getElementById("sharedtext").innerHTML = "Project Shared.";
}
</script>
我使用 discord.js 制作我的 discord 机器人。我对JavaScript也很了解。
您可以使用 mysql 数据库来保存来自网站的数据,机器人会每隔 5 秒设置一个时间间隔来检查是否有新数据,如果有则它会执行所需的操作. HTML:
<html>
<body>
<button onclick="share()">Share</button>
<p id="sharedtext"></p>
<script>
function share() {
var projectID = prompt('Whats the project ID of your scratch project?');
var path = 'Action page path here'; //Change this to the action page path
if(projectID !== null){
var Http = new XMLHttpRequest();
Http.responseType = 'text';
Http.onreadystatechange = function(){
if(Http.readyState == 4 && Http.status == 200){
document.getElementById("sharedtext").innerHTML = Http.response;
}
}
Http.open("POST", path, true);
Http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
Http.send(`projectID=${projectID}`);
}
}
</script>
</body>
</html>
动作页面:
<?php
$hostname = 'localhost';
$username = 'root';
$password = '';
$dbname = 'db';
$conn = new mysqli($hostname, $username, $password, $dbname);
if(!$conn){
echo 'There was an error while connecting to the database!';
exit();
}
if(isset($_POST['projectID'])){
$stmt = $conn->prepare("SELECT * FROM yourTable WHERE projectid = ?");
$stmt->bind_param("s", $_POST['projectID']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows < 1){
$stmt2 = $conn->prepare("INSERT INTO yourTable (projectid) VALUES (?)");
$stmt2->bind_param("s", $_POST['projectID']);
$stmt2->execute();
echo 'Project Shared.';
exit();
} else {
echo 'The project ID has already been shared!';
exit();
}
} else {
echo 'Invalid method';
exit();
}
?>
机器人:
const Discord = require('discord.js');
const mysql = require('mysql');
const client = new Discord.Client();
var conn = = mysql.createPool({
connectionLimit : 50,
host : 'localhost',
user : 'root',
password : '',
database : 'db'
});
var diff, length, numb;
function checkNew(){
conn.query('SELECT * FROM yourTable ORDER BY id ASC', function(err, results){
if(err) return console.log(err);
if(length === results.length) return;
diff = results.length - length;
numb = results.length;
length = results.length;
while(diff > 0){
results[numb - 1].projectid //Do something with the project id
--numb;
--diff;
}
});
}
client.once("ready", () => {
console.log(`Started`);
setInterval(checkNew, 5000);
});
MySQL:
CREATE TABLE yourTable(
id int(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,
projectid TINYTEXT NOT NULL
);
我正在尝试制作一个 Discord 机器人,每当您 press/do 网站上的内容时,它 与机器人通信 ,并且 发送data 给它。有人有什么建议吗?这是我的 GitHub 托管网站上其中一个页面的一些代码:
<html>
<!–- Website Stuff -–>
<button onclick="share()">Share</button>
<p id="sharedtext"></p>
<script>
function share() {
var projectID = prompt('Whats the project ID of your scratch project?')
<!-- Send data to bot -->
document.getElementById("sharedtext").innerHTML = "Project Shared.";
}
</script>
我使用 discord.js 制作我的 discord 机器人。我对JavaScript也很了解。
您可以使用 mysql 数据库来保存来自网站的数据,机器人会每隔 5 秒设置一个时间间隔来检查是否有新数据,如果有则它会执行所需的操作. HTML:
<html>
<body>
<button onclick="share()">Share</button>
<p id="sharedtext"></p>
<script>
function share() {
var projectID = prompt('Whats the project ID of your scratch project?');
var path = 'Action page path here'; //Change this to the action page path
if(projectID !== null){
var Http = new XMLHttpRequest();
Http.responseType = 'text';
Http.onreadystatechange = function(){
if(Http.readyState == 4 && Http.status == 200){
document.getElementById("sharedtext").innerHTML = Http.response;
}
}
Http.open("POST", path, true);
Http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
Http.send(`projectID=${projectID}`);
}
}
</script>
</body>
</html>
动作页面:
<?php
$hostname = 'localhost';
$username = 'root';
$password = '';
$dbname = 'db';
$conn = new mysqli($hostname, $username, $password, $dbname);
if(!$conn){
echo 'There was an error while connecting to the database!';
exit();
}
if(isset($_POST['projectID'])){
$stmt = $conn->prepare("SELECT * FROM yourTable WHERE projectid = ?");
$stmt->bind_param("s", $_POST['projectID']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows < 1){
$stmt2 = $conn->prepare("INSERT INTO yourTable (projectid) VALUES (?)");
$stmt2->bind_param("s", $_POST['projectID']);
$stmt2->execute();
echo 'Project Shared.';
exit();
} else {
echo 'The project ID has already been shared!';
exit();
}
} else {
echo 'Invalid method';
exit();
}
?>
机器人:
const Discord = require('discord.js');
const mysql = require('mysql');
const client = new Discord.Client();
var conn = = mysql.createPool({
connectionLimit : 50,
host : 'localhost',
user : 'root',
password : '',
database : 'db'
});
var diff, length, numb;
function checkNew(){
conn.query('SELECT * FROM yourTable ORDER BY id ASC', function(err, results){
if(err) return console.log(err);
if(length === results.length) return;
diff = results.length - length;
numb = results.length;
length = results.length;
while(diff > 0){
results[numb - 1].projectid //Do something with the project id
--numb;
--diff;
}
});
}
client.once("ready", () => {
console.log(`Started`);
setInterval(checkNew, 5000);
});
MySQL:
CREATE TABLE yourTable(
id int(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,
projectid TINYTEXT NOT NULL
);