Discord机器人在ios上的功能与android和桌面上的不同
我有一个机器人,可以完美地在桌面应用程序上运行,在我的个人安卓手机/手机上实现Discord和Discord。。。但在IPhone/IOS上执行相同的步骤是行不通的。由于我从未拥有过苹果的产品,所以我对IOS与安卓或Windows的区别几乎没有任何背景 这主要与查询转义值的时间有关。有人输入一个值(我正在制作的TCG机器人的卡名),比如“Drago's Fury”。在桌面和安卓系统上,卡片标题被转义为双引号,而在IOS版本中,卡片标题被保留为单引号。因此,当将该卡的名称与主卡列表进行比较时,无法找到该卡 下面是我如何通过循环得到所有卡名都匹配的主列表Discord机器人在ios上的功能与android和桌面上的不同,android,ios,node.js,discord.js,Android,Ios,Node.js,Discord.js,我有一个机器人,可以完美地在桌面应用程序上运行,在我的个人安卓手机/手机上实现Discord和Discord。。。但在IPhone/IOS上执行相同的步骤是行不通的。由于我从未拥有过苹果的产品,所以我对IOS与安卓或Windows的区别几乎没有任何背景 这主要与查询转义值的时间有关。有人输入一个值(我正在制作的TCG机器人的卡名),比如“Drago's Fury”。在桌面和安卓系统上,卡片标题被转义为双引号,而在IOS版本中,卡片标题被保留为单引号。因此,当将该卡的名称与主卡列表进行比较时,无法
var sql = `SELECT * FROM ??`
var inserts = ['cardsmaster']
con.query(sql, inserts, (error, rows, fields) => {
let cardsList = []
for (var i in rows) {
cardsList.push(rows[i].name)
}
当询问用户要添加哪些卡时,将运行以下代码。回复被获取并通过一个循环运行,以匹配主列表
async function addToDeckQuestion(){
const agree = "✅"
const disagree = "❌"
let msg = await message.author.send(`Would you like to add cards to ${userdeckname}? Please react with one of the following...`)
await msg.react(agree)
await msg.react(disagree)
const filter = (reaction, user) => {
return ['✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id;
};
const reply = await msg.awaitReactions(filter, { max: 1 })
.catch(console.error);
const addtodeck = reply.first()
return addtodeck
}
let addtodeck = await addToDeckQuestion();
if (addtodeck.emoji.name == agree){
message.author.send("You have agreed to add cards to this new deck.")
async function cardExists() {
let msg = await message.author.send(`Please provide the cardnames that you would like to add to '${userdeckname}'.\n\n**NOTE:** Please separate each card with a comma and space, like so "Pact of Darkness, Aquos Slam, Karmic Balance"`)
const filter = m => m.author.id === message.author.id
const reply = await msg.channel.awaitMessages(filter, { max: 1 })
.catch(console.error);
let cardsToAdd = await reply.first()
let usercardnamearray = await cardsToAdd.content.split(", ")
let matchedcards = []
let unmatchedcards = []
for (let i = 0; i < usercardnamearray.length; i++) {
usercardnamearray[i] = usercardnamearray[i].replace(/'/gi, "\'");
let found = cardsList.indexOf(`${usercardnamearray[i]}`)
console.log(found)
if (found >= 0) {
matchedcards.push(usercardnamearray[i])
} else if (found == -1){
unmatchedcards.push(usercardnamearray[i])
}
}
console.log('Finished!')
return await [matchedcards, unmatchedcards]
}
let cards = await cardExists();
let matchedcards = await cards[0]
let unmatchedcards = await cards[1]
if (unmatchedcards.length >= 1){
message.author.send(await `The card **${unmatchedcards.join(", ")}** could **NOT** be added. Please check your spelling, capitalization and enter just these card names again!`)
}
异步函数addToDeckQuestion(){
const agree=”✅"
常量不同意=”❌"
let msg=wait message.author.send(`您想将卡片添加到${userdeckname}吗?请使用以下选项之一作出反应…`)
等待消息。反应(同意)
等待消息。反应(不同意)
常量过滤器=(反应,用户)=>{
返回✅', '❌'].包括(reaction.emoji.name)&&user.id==message.author.id;
};
const reply=await msg.await反应(过滤器,{max:1})
.catch(控制台错误);
const addtodeck=reply.first()
返回addtodeck
}
让addtodeck=等待addToDeckQuestion();
if(addtodeck.emoji.name==同意){
message.author.send(“您已同意将卡片添加到此新卡片组。”)
异步函数cardExists(){
let msg=wait message.author.send(`请提供您要添加到${userdeckname}中的卡片名'。\n\n**注意:*请用逗号和空格分隔每张卡片,如“黑暗契约、阿奎斯猛击、业力平衡”`)
const filter=m=>m.author.id==message.author.id
const reply=await msg.channel.await消息(过滤器,{max:1})
.catch(控制台错误);
让cardsToAdd=等待回复。first()
让usercardnamearray=等待cardsToAdd.content.split(“,”)
让匹配的卡片=[]
让不匹配的卡片=[]
for(设i=0;i关于为什么同一信息在IOS中的解释与其他信息不同,您有什么想法吗?请提前感谢您的帮助!自从IOS 11以来,默认情况下,单引号和双引号会被做成卷曲的替代品。例如,默认的ASCII单引号字符
'
被键入为'
或“
这取决于位置。但是,用户可以在设置中关闭此功能,因此并非所有苹果用户都可以使用此功能
这对您的代码意味着搜索字符串在Drago's Fury
中使用了不同的字符作为撇号。因此,搜索不会返回,因为这两个字符实际上是不同的
一个简单的解决方案是将这些字符替换为名称中使用的默认ASCII字符
const str='Drago's Fury';
console.log(str);
const corrected=str.replace(/'|'/g,'\'');
console.log(已更正)
我想,插入替换行也不会影响android和Windows对事物的解释。IOS需要如此复杂,不是吗?哈哈,我会尝试插入替换行,看看测试是如何进行的。在使用卷曲单引号的任何地方,它们都会被解释为默认的ASCII单引号字符。Generally说它只会影响iOS用户,但实际上您可以在Windows和Android上键入替代项。我在这一行中添加了usercardnamearray[I]=usercardnamearray[I]。replace(/'|'/gi,'\'')
就在我在上面发布的代码中的另一个替换行的正下方,它似乎没有修复任何问题。可能我把它放错了位置或做了什么错误的事情?我用gi尝试过,也用g尝试过,没有骰子。你能登录usercardnamearray[I]吗
更换前后?我发现我把它放在了错误的代码部分,而不是测试它时运行的代码部分。一旦我把它放在正确的位置,它就工作得很好!感谢你继续帮助我解决问题。