99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

我在 4 年的機器人開源項目中學到了什么

0
分享至


作者 | Michael Parker

譯者 | 劉雅夢

策劃 | 褚杏娟

我是名為 Simplex 的開源 Discord 機器人的創建者 / 開發者。在這篇文章中,我想帶你了解一下這個項目所做的一些決定、問題和缺陷修復,以及項目啟動的原因。Simplex 是我 14 歲時創建的一個機器人,現在它運行在 500 臺服務器上擁有 8.4 萬用戶。我希望你們和我一樣享受我的開源之旅。

故事是如何開始的

我 3 年前(2021 年 10 月 15 日)創辦了 Simplex。那時候,它還不叫 Simplex;這是 Michael Media Group 的教程機器人,我在那里制作 Python 教學視頻。目前還不清楚這個教程機器人在哪里結束的,Simplex 又是從哪里開始。第一次 GitHub 提交的日期為 2021 年 10 月 25 日。Simplex 是一個我可以據此制作教程的想法試驗場。然而,教程一直沒有做出來;但我不斷地將想法打包到這個測試機器人中。

最初的目標是幫助人們制作一些東西,而不是每月為 Mee6 這樣的機器人支付大筆訂閱費。我發布了這個機器人之后,一個很大的驅動因素就是用一個關心社區的開源機器人取代了我朋友所使用的所有付費工具。

剛開始的時候,我曾經認為所有的費用都是隨意的。成本莫名其妙地高得離譜。當我的機器人開始獲得一些吸引力時,我意識到需要某種形式的收入來支付成本,所以我建立了一個“給我買杯咖啡”項目。我還意識到,一些機器人(如 Mee6)沒有理由向最終用戶收取隱藏費用。像這樣的機器人讓我很不安,因為它們的目標顯然是想從那些不那么了解自己支出情況的年輕人那里賺走盡可能多的錢。

將 Simplex 遷移到云上

Simplex 最初運行的是 discord.py,并在我的計算機上本地托管。它工作得很好——那時只有我和我的幾個朋友在使用這個機器人,我比其他任何人起得都早,并且是最后上床睡覺的。

隨著機器人開始增長到 20 或 30 臺服務者時,我覺得讓我的電腦一直開著不是一個好的解決方案,所以我把它轉移到了它們最便宜的 DigitalOcean 計劃上。我已經在運行一個名為未知硬幣的加密貨幣的根節點了,這是我在一年前 14 歲時建立的。后來,我轉向了 Hetzner,因為 RAM 更多價格也更便宜,我目前仍在使用它。

技術的東西

剛開始的時候,我不得不在 discord.js 和 discord.py 之間做出選擇。我以前曾設法使用 Python 來完成小任務和自動化,并且我曾設法用 JS 打印了“Hello World”,因此 Python 是明確的選擇。Discord.py 相對易于使用。在機器人的前六個月里,我使用了 discord.py,直到它被棄用,這給我留下了兩個選擇:Pycord 或 Hikari。

我之所以選擇 Pycord,是因為它與 discord.py 有很多相似之處。(事實上,Pycord 是 discord.py 的一個分支。)也是在這個時候,我得到了一位名叫 Sid 的程序員的幫助,他做了一些提交,創建了我們現在使用的流行的離職系統(也不小心第二次刪除了我們所有的用戶數據)。(經過一番說服,我在本文中添加了這個故事。)

Sid 時不時地會帶來一些有用的提交和反饋。也是在這個時候,我們邀請機器人的人數激增。它在一周內爆炸了,這導致了數據丟失的問題(即使 Sid 沒有刪除它)。

數據庫之旅

JSON 文件最初被用作數據庫。回想起來,這是一個糟糕的想法,根本不應該發生,但當時我只是一個 14 歲的孩子,以前從未有過需要長期存儲數據的項目。JSON 似乎很容易使用。問題是,如果兩個不同的服務器試圖同時訪問 JSON 文件,其中一個或兩個服務器都會被覆蓋。

當然,這不是我想要的,所以我學習了 SQLite3,由于它非常簡單可靠,我強烈推薦它。我相信你們中的一些人可以看到這里的問題。如果你做不到,不用擔心——我花了幾個月的時間才意識到這一點。SQLite3 是阻塞的,而不是異步的(阻塞與非阻塞)。如果計數系統變得更受歡迎,這有可能會減慢機器人和響應時間。

這導致我重寫了我們所有的數據庫調用來使用 aiosqlite。Aiosqlite 仍然是一種 SQLite 數據庫,就像 SQLite3 一樣。不同之處在于,Aiosqlite 是一個同一類型數據庫軟件的不同庫和實現。

計數的挑戰

求值問題求值是一個一直令人頭疼的問題。一開始,我只是在使用 Python 內置的 eval() 函數,直到我在 Discord 上看到有人說“eval 是邪惡的”,然后我搜索了一下。事實證明,我創建了一個安全漏洞,計數通道中的任何有效 Python 代碼都將被執行。

幸運的是,在有人利用它之前,我們很快就注意到了這一點。我的第一個想法是將讀取的字符串過濾為數字和 - + ! * / < >。然而,這里有兩個問題:

1.它將不再計算二進制、十六進制等。(這不是一個大問題,因為我可以重新實現它們。)

2.通過計算大量的數字,機器人可能會崩潰。

事實證明,如果你在 Python 中執行 eval(101010),它將會使程序崩潰。(一個有趣的事實:我了解到這是一些公共機器人的問題。我確實嘗試聯系了一些人來讓他們了解這一情況。)在嘗試了一些解決方案后,我決定使用庫來保證安全并阻止溢出錯誤。

Base69

最后一個與計數有關的大事件是 base69。我上了一堂關于八進制和十六進制的計算機科學課,我的一個朋友說:“你知道,如果有一種使用 base69 的方法,那就太有趣了。”半小時后,我在午休時間發布了一個 Python 包,然后那天晚上,我決定將其實現到 Simplex 計數系統中。

模塊化設計

大多數人在看到 Simplex 中的文件和數據庫的數量時,會問兩個問題:

1.“為什么要創建這么多數據庫文件,而不是在一個數據庫文件中創建所有表?”

2.“為什么有這么多的 Python 文件?”

每個 Python 文件都是一個 Cog。Cog 是“一個類中的命令、監聽器和一些狀態的集合”(discord.py 文檔)。

采用模塊化設計有以下幾個原因:

  • 調試:有時很難弄清楚到底是什么導致了機器人崩潰,或者所有的存儲都到哪里去了。Cog 可以在機器人運行時加載和卸載。

  • 開發:在我的筆記本電腦上工作時,我沒有所有數據庫的副本,所以我可以在一個 Cog 及其相應的數據庫上工作,而無需進行大量設置。

  • 開源:這允許人們只需從 GitHub 下載一個 Cog 文件,就知道它能工作。

缺失的數據

我們很早就遇到了兩次數據丟失的情況。可能有一些服務非常能理解我們,他們知道我們是兩個 14 歲的孩子在互聯網上發布代碼。

出了什么問題?

在編寫代碼時,一些空白數據庫文件被推送到了 GitHub。當我被告知一切都已被清除時,我運行了一個我添加到機器人中的命令,以拉取文件并重新啟動機器人。不幸的是,Sid 的測試數據庫仍在存儲庫中。

我學到了什么?

關鍵教訓:

  • 管理開源不僅僅是編寫代碼。

  • 為成功做準備與為失敗做準備同樣重要。

  • 我深入學習了 Python,發現了它的怪癖和力量。

https://blog.michaelrbparker.com/post/

會議推薦

AICon 2025 強勢來襲,5 月上海站、6 月北京站,雙城聯動,全覽 AI 技術前沿和行業落地。大會聚焦技術與應用深度融合,匯聚 AI Agent、多模態、場景應用、大模型架構創新、智能數據基建、AI 產品設計和出海策略等話題。即刻掃碼購票,一同探索 AI 應用邊界!

今日薦文

你也「在看」嗎?

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
被中產炒熱的自行車,價格崩了?

被中產炒熱的自行車,價格崩了?

中國新聞周刊
2025-05-21 22:41:08
“下輩子不來了”,點贊440萬,評論52萬,評論區破防

“下輩子不來了”,點贊440萬,評論52萬,評論區破防

灰產圈
2025-05-14 12:37:28
網友稱黃楊鈿甜塌房早有預兆,她10歲時,爸爸戴的手表已很大牌

網友稱黃楊鈿甜塌房早有預兆,她10歲時,爸爸戴的手表已很大牌

丫頭舫
2025-05-20 11:24:32
張本智和悄無聲息輸掉內戰告別多哈,兄妹倆都被同一個人逮著薅!

張本智和悄無聲息輸掉內戰告別多哈,兄妹倆都被同一個人逮著薅!

晚霧空青
2025-05-22 10:51:09
日本人開始“逆生長”!勉強沖到一米七就停了,基因遇到上限了?

日本人開始“逆生長”!勉強沖到一米七就停了,基因遇到上限了?

阿纂看事
2025-05-18 23:59:53
中國氣象局提升重大氣象災害(暴雨)Ⅳ級應急響應為Ⅲ級

中國氣象局提升重大氣象災害(暴雨)Ⅳ級應急響應為Ⅲ級

界面新聞
2025-05-21 09:28:46
美智庫:一旦中美開戰,中國不能擊沉美國航母,否則引起世界大戰

美智庫:一旦中美開戰,中國不能擊沉美國航母,否則引起世界大戰

Ck的蜜糖
2025-05-22 10:22:41
張志坤:已經到喊出“打過海峽去,統一全中國”的時候了

張志坤:已經到喊出“打過海峽去,統一全中國”的時候了

秦安戰略
2025-05-20 18:47:04
記住:永遠不要對任何人透露你的真實情況,你要學會藏兩樣東西!

記住:永遠不要對任何人透露你的真實情況,你要學會藏兩樣東西!

煙臺秀姐
2025-05-21 10:28:23
戰后算總賬,巴公布最新戰果!18日,美媒:殲10擊穿世界軍工市場

戰后算總賬,巴公布最新戰果!18日,美媒:殲10擊穿世界軍工市場

林子說事
2025-05-21 01:34:41
王菲謝霆鋒飛日本過情人節,低頭耳語好恩愛,輪流背包王菲很嬌羞

王菲謝霆鋒飛日本過情人節,低頭耳語好恩愛,輪流背包王菲很嬌羞

娛樂圈圈圓
2025-05-21 17:00:36
阿莫林:如果需要我下課我連賠償金都不要,但我不會辭職

阿莫林:如果需要我下課我連賠償金都不要,但我不會辭職

懂球帝
2025-05-22 07:08:42
西決G1收視率較去年下降24%,自2013年之后歷史最低

西決G1收視率較去年下降24%,自2013年之后歷史最低

雷速體育
2025-05-22 07:28:26
20歲女孩被強奸殺害,身體被當成小羊捆綁,一根體毛成破案關鍵

20歲女孩被強奸殺害,身體被當成小羊捆綁,一根體毛成破案關鍵

胖胖侃咖
2025-05-21 08:00:07
“我就一件事,怎么規避責任,其他的,玩去”

“我就一件事,怎么規避責任,其他的,玩去”

槽邏輯
2025-05-21 18:19:16
曝朱媛媛患卵巢癌3期,4月露面瘦好多,辛柏青發博時間惹淚目

曝朱媛媛患卵巢癌3期,4月露面瘦好多,辛柏青發博時間惹淚目

古希臘掌管月桂的神
2025-05-21 16:12:36
公公退休,給了大哥一套房和100萬元。我和老公卻一無所獲

公公退休,給了大哥一套房和100萬元。我和老公卻一無所獲

朗威談星座
2025-05-22 10:07:57
朱媛媛已于昨天火化 國家話劇院院長懷念其笑容

朱媛媛已于昨天火化 國家話劇院院長懷念其笑容

看看新聞Knews
2025-05-21 23:42:25
又是100%關稅,中方未發請柬,特朗普又翻臉了,隨即展開“報復”

又是100%關稅,中方未發請柬,特朗普又翻臉了,隨即展開“報復”

科技講者66
2025-05-21 22:34:58
辛柏青沉痛發文:妻子、演員朱媛媛抗癌五年后去世,享年51歲

辛柏青沉痛發文:妻子、演員朱媛媛抗癌五年后去世,享年51歲

文匯報
2025-05-21 11:40:30
2025-05-22 11:40:49
AI前線 incentive-icons
AI前線
面向AI愛好者、開發者和科學家,提供AI領域技術資訊。
856文章數 80關注度
往期回顧 全部

科技要聞

蘋果設計靈魂投奔OpenAI 十年淘汰iPhone?

頭條要聞

牛彈琴:南非總統穿西裝參加鴻門宴 他比澤連斯基老練

頭條要聞

牛彈琴:南非總統穿西裝參加鴻門宴 他比澤連斯基老練

體育要聞

威少被交易時,雷霆下一個MVP已在陣中

娛樂要聞

朱媛媛喪事一切從簡,親戚剛知她去世

財經要聞

中國,拋售美債!

汽車要聞

或超700馬力 保時捷911 GT2 RS最新消息曝光

態度原創

房產
藝術
教育
健康
數碼

房產要聞

海口住建官宣:限價商品房上市交易細則要來了!

藝術要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

教育要聞

入戶陪伴,猥瑣發育!

唇皰疹和口腔潰瘍是"同伙"嗎?

數碼要聞

PNY 推出 microSD Express 存儲卡:128GB、256GB 兩種容量可選

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 洛宁县| 冷水江市| 盐津县| 泸定县| 镇安县| 扎兰屯市| 威信县| 永福县| 临沭县| 增城市| 柘荣县| 丰城市| 义马市| 轮台县| 宜良县| 三亚市| 栾川县| 繁峙县| 东城区| 柯坪县| 中江县| 肥城市| 安徽省| 正镶白旗| 沾益县| 津市市| 甘南县| 图木舒克市| 正定县| 澄城县| 高要市| 平舆县| 依兰县| 雅江县| 营口市| 九龙县| 太白县| 桂林市| 海林市| 镇宁| 塘沽区|