擺脫If語句
所以我是javascript新手,我制作了一個(gè)discord bot,可以提供食物和飲料,并希望它不需要前綴就回復(fù),我已經(jīng)做了。我的問題是,我想嘗試清理代碼和擺脫所有的If
解答動(dòng)態(tài)
盡管我基本上同意Ben Stevens的回答,但我確實(shí)認(rèn)為還有更大的改進(jìn)空間。
//可以在helper/util文件中或在該文件的頂部定義它因?yàn)樗且粋(gè)常量listconst回復(fù)\u LIST=[盡情享受吧!如果您還需要什么,請(qǐng)告訴我!quot;messagegt;{const{channel,content,reply:messageReply}=message;//從消息中解構(gòu)變量,回復(fù):messageReply重命名回復(fù)到messageReply const response=回復(fù)\列表[數(shù)學(xué)地板(數(shù)學(xué).隨機(jī)()*答復(fù)_列表長(zhǎng)度)];常量鍵=對(duì)象.鍵(gifs).find(鍵=quot;我不明白你的意思。quot;)。然后(msg=gt;{消息回復(fù)(響應(yīng));頻道.發(fā)送(gifs[key]);//獲取gifs對(duì)象中key處的值},5000);}); I從使用對(duì)象.鍵(gifs)。映射到。查找。在這里使用find的原因是它在找到第一個(gè)匹配項(xiàng)后停止。這可以確保如果有人下了quot;,腳本不會(huì)發(fā)送兩個(gè)回復(fù)。
另一個(gè)優(yōu)點(diǎn)是縮進(jìn)較少,因?yàn)橄⒌陌l(fā)送不在lambda中(這些gt;{})。這增加了一些可讀性。
如果您想發(fā)送兩條消息,如果有人說點(diǎn)咖啡點(diǎn)拿鐵,您可以使用Ben Stevens提供的代碼,但我會(huì)使用.forEach而不是.map。map用于返回?cái)?shù)組的(修改過的)副本,這不適合您的用例。
由于if語句中的大部分內(nèi)容都是相同的,您需要檢查發(fā)生了什么變化。似乎它只是圖像URL。
您可以更新if語句,只更改圖像URL并以結(jié)束:
let img='';文本=message.content.toLowerCase=小寫();如果(文本。包括(‘點(diǎn)咖啡’){img='https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2fchoffee%20cropped.gif?v=1613444146008';}如果(文本。包括('order latte'){img='https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2FLatte.gif?v=1613444145762';}如果(文本。包括('order muffin'){img='https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2FMuffin.gif?v=1613444146225';}//。。。消息.channel.send('馬上就來!')。然后((msg)=gt;{const reply=[“好好享受?薄案悖 薄叭綣慊剮枰裁矗敫嫠呶遙 薄,”您已经杯h(huán)窳恕埃蹦鞘?.5美元“,”那是5.5美元“,];const images={'點(diǎn)咖啡':'https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2fchoffee%20cropped.gif?v=1613444146008','點(diǎn)拿鐵':'https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2FLatte.gif?v=1613444145762','訂購(gòu)松餅':'https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2FMuffin.gif?v=1613444146225','訂購(gòu)草莓蛋糕卷':'https://cdn.glitch.com/1f3ad41e-6c0c-4160-902b-a50330e419bd%2f草莓%20cake%20roll.gif?v=1613444145762',};const response=reply[數(shù)學(xué)地板(數(shù)學(xué).隨機(jī)() * 回復(fù)長(zhǎng)度)];const img=查找圖像(消息.內(nèi)容,圖像);如果(!img){/*返回?*/ } 消息.channel.send('馬上就來!')。然后((msg)=>;刪除消息({timeout:5000})).catch(控制臺(tái)錯(cuò)誤);setTimeout(函數(shù)(){消息.回復(fù)(回應(yīng));message.channel.send發(fā)送(img);},5000);})```- End
免責(zé)聲明:
本頁(yè)內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁(yè)內(nèi)容僅供參考,請(qǐng)您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請(qǐng)咨詢專業(yè)人士處理。