当有人在机器人 dms 中输入时,我如何在特定频道中输入我的 discord 机器人?
How do i make my discord bot type in a specific channel while someone is typing in the bots dms?
我希望我的 discord 机器人在用户输入机器人 dms 时输入特定频道,以使其看起来像是用户正在通过机器人输入。我已经成功做到了,只要有人在机器人 dms 中输入,我的机器人就会开始在频道中输入,但当用户停止输入时它不会停止
谢谢你的帮助
我现在希望机器人以相反的方式执行此操作,这就是我在代码中添加以下几行的原因。它还不起作用。错误信息如下:
“(节点:38868)UnhandledPromiseRejectionWarning:TypeError:dmToTypeIn.startTyping 不是函数”
Client.on("typingStart", async function(channel, user){
if(user.bot){
return;
}
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID)
if(channel.type === "dm"){
if(openTicketsByUserID[user.id]){
console.log("one")
channelToTypeIn.startTyping()
} else{
return;
}
}
})
新代码:
Client.on("typingStart", async function(channel, user) {
function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
if (channel.type === "dm") {
if (openTicketsByUserID[user.id]) {
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
channelToTypeIn.startTyping();
}
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(user.dmChannel)) {
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
fulfilled = true;
channelToTypeIn.stopTyping(true);
}
}
}
↓↓↓ 还没做的部分↓↓↓
if(openTicketsByChannelID[channel.id]){
let dmToTypeIn = Client.users.fetch(openTicketsByChannelID[channel.id].userID)
dmToTypeIn.startTyping();
}
let fulfilled = false;
while(!fulfilled){
if(!user.typingIn(channel)){
let dmToTypeIn = Client.channels.get(openTicketsByChannelID[channel.id].userID)
fulfilled = true;
dmToTypeIn.stopTyping(true);
}
}
});
您必须检查用户是否使用 User.typingIn
方法输入
Client.on("typingStart", async function(channel, user) {
if (user.bot) {
return;
}
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
if (channel.type === "dm") {
if (openTicketsByUserID[user.id]) {
channelToTypeIn.startTyping();
}
}
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(user.dmChannel)) {
fulfilled = true;
channelToTypeIn.stopTyping(true);
}
}
});
您实际上可以使用它来制作您自己的自定义事件!
Client.on("typingStart", async (channel, user) => {
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(channel)) {
fulfilled = true;
Client.emit("typingStop", channel, user)
}
}
})
并用
收听
Client.on("typingStop", async (channel, user) => {
//code for when user stops typing
})
我希望我的 discord 机器人在用户输入机器人 dms 时输入特定频道,以使其看起来像是用户正在通过机器人输入。我已经成功做到了,只要有人在机器人 dms 中输入,我的机器人就会开始在频道中输入,但当用户停止输入时它不会停止
谢谢你的帮助
我现在希望机器人以相反的方式执行此操作,这就是我在代码中添加以下几行的原因。它还不起作用。错误信息如下: “(节点:38868)UnhandledPromiseRejectionWarning:TypeError:dmToTypeIn.startTyping 不是函数”
Client.on("typingStart", async function(channel, user){
if(user.bot){
return;
}
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID)
if(channel.type === "dm"){
if(openTicketsByUserID[user.id]){
console.log("one")
channelToTypeIn.startTyping()
} else{
return;
}
}
})
新代码:
Client.on("typingStart", async function(channel, user) {
function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
if (channel.type === "dm") {
if (openTicketsByUserID[user.id]) {
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
channelToTypeIn.startTyping();
}
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(user.dmChannel)) {
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
fulfilled = true;
channelToTypeIn.stopTyping(true);
}
}
}
↓↓↓ 还没做的部分↓↓↓
if(openTicketsByChannelID[channel.id]){
let dmToTypeIn = Client.users.fetch(openTicketsByChannelID[channel.id].userID)
dmToTypeIn.startTyping();
}
let fulfilled = false;
while(!fulfilled){
if(!user.typingIn(channel)){
let dmToTypeIn = Client.channels.get(openTicketsByChannelID[channel.id].userID)
fulfilled = true;
dmToTypeIn.stopTyping(true);
}
}
});
您必须检查用户是否使用 User.typingIn
方法输入
Client.on("typingStart", async function(channel, user) {
if (user.bot) {
return;
}
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
if (channel.type === "dm") {
if (openTicketsByUserID[user.id]) {
channelToTypeIn.startTyping();
}
}
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(user.dmChannel)) {
fulfilled = true;
channelToTypeIn.stopTyping(true);
}
}
});
您实际上可以使用它来制作您自己的自定义事件!
Client.on("typingStart", async (channel, user) => {
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(channel)) {
fulfilled = true;
Client.emit("typingStop", channel, user)
}
}
})
并用
收听Client.on("typingStop", async (channel, user) => {
//code for when user stops typing
})