איך בונים בוט לדיסקורד? כותבים תוכנית קצרה בשפת פייתון בעזרת ספרייה חינמית בשם discord.py, רושמים אפליקציה בפורטל המפתחים של דיסקורד כדי לקבל טוקן (מפתח גישה סודי), מגדירים לבוט הרשאות מדויקות בשרת ומריצים את הקוד על מחשב שנשאר דלוק. בוט פשוט שעונה לפקודה אחת אפשר לבנות בערב אחד. בוט שמנהל שרת של 200 חברים, סופר נקודות, שומר נתונים ולא קורס כל שעתיים דורש יסודות בפייתון שרוב בני ה-13 עד 16 עוד לא רכשו. אתם לא צריכים לדעת לתכנת כדי לעזור. מספיק להבין איפה עובר הגבול בין מה שהנער יבנה לבד לבין מה שיצריך ליווי, ולוודא שהטוקן לא ידלוף לאינטרנט.
במאמר הזה תמצאו הסבר מה כל חלק בבוט עושה, אילו טעויות אבטחה נערים עושים כמעט תמיד, ומה אפשר לעשות כבר השבוע כדי שהבקשה "תעזור לי לבנות בוט" תהפוך ללמידת תכנות רצינית.
למה דווקא בוט לדיסקורד, ולמה זה סימן טוב
דיסקורד הוא המקום שבו הרבה בני נוער משחקים יחד, מדברים בערוצי קול ומנהלים קהילות סביב משחק, סדרה או יוטיובר. כמעט בכל שרת פעיל רצים כמה בוטים: אחד מברך חברים חדשים, אחד מנגן מוזיקה בערוץ הקול, אחד מחלק דרגות למי שפעיל. הנער רואה אותם כל יום ושואל את עצמו שאלה הגיונית: אם מישהו כתב את זה, למה שאני לא אכתוב?
זו נקודת פתיחה מצוינת ללמידת תכנות, כי יש לה מטרה ברורה וקהל אמיתי. ילד שלומד לולאות מתוך ספר משתעמם אחרי עמוד. ילד שצריך לולאה כדי שהבוט שלו יבדוק מי מהחברים בשרת לא היה פעיל חודש, יישב עליה שעתיים. המוטיבציה מגיעה מבחוץ, מהחברים שמחכים לראות את הבוט עובד.
כדאי לדעת שתנאי השימוש של דיסקורד קובעים גיל מינימום של 13 ברוב המדינות. אם הילד צעיר מזה, השיחה על הבוט היא גם הזדמנות טובה לדבר על החשבון עצמו ועל מה שקורה בשרתים שבהם הוא נמצא.
מה בוט לדיסקורד דורש בפועל: ארבעה רכיבים
כשנער אומר "אני רוצה בוט", הוא בדרך כלל מדמיין את התוצאה ולא את מה שמתחת. בפועל כל בוט, פשוט ככל שיהיה, בנוי מארבעה רכיבים שצריך להבין:
- קוד בשפת תכנות. השפה הנפוצה למתחילים היא פייתון. במדד TIOBE, שמדרג את הפופולריות של שפות תכנות, פייתון נמצאת במקום הראשון מאז אוקטובר 2021, והיא נלמדת גם בהרבה מגמות מחשבים בתיכון.
- ספרייה שמדברת עם דיסקורד. discord.py היא ספריית קוד פתוח שחוסכת לנער לכתוב בעצמו את התקשורת עם השרתים של דיסקורד. היא מטפלת בחיבור, והנער כותב רק מה הבוט עושה.
- אפליקציה רשומה, טוקן והרשאות. בפורטל המפתחים של דיסקורד יוצרים "אפליקציה", מקבלים טוקן ובוחרים מה הבוט מורשה לעשות בשרת.
- מקום שבו הקוד רץ. הבוט חי רק כל עוד התוכנית פועלת. אם המחשב של הנער כבוי, הבוט מופיע כלא מחובר.
כל רכיב כזה הוא נושא לימוד בפני עצמו. הקוד דורש הבנה של משתנים, תנאים, פונקציות ולולאות. הספרייה דורשת קריאה של תיעוד באנגלית. הטוקן וההרשאות הם שיעור באבטחת מידע. והרצה קבועה היא היכרות ראשונה עם שרתים. כך בוט קטן נוגע בכמעט כל מה שמתכנת מתחיל צריך לדעת.
הטוקן: הסיסמה שהנער חייב לשמור כמו את הסיסמה לחשבון שלו
הטוקן הוא מחרוזת ארוכה של אותיות ומספרים שמזהה את הבוט מול דיסקורד. מי שמחזיק בטוקן שולט בבוט, ובכל מה שהבוט מורשה לעשות. אם לבוט יש הרשאת מנהל בשרת של 300 חברים, מי שגנב את הטוקן יכול למחוק ערוצים, להעיף חברים ולשלוח הודעות ספאם בשם הבוט.
הדליפה הנפוצה ביותר אצל נערים היא העלאת הקוד ל-GitHub כשהטוקן כתוב בתוכו. הנער רוצה להראות לחבר את הקוד, מעלה אותו למאגר ציבורי, ותוך דקות סורקים אוטומטיים מוצאים את הטוקן. זו לא בעיה של מתחילים בלבד: לפי דוח State of Secrets Sprawl של חברת GitGuardian לשנת 2024, במהלך 2023 נחשפו בקומיטים ציבוריים ב-GitHub כ-12.8 מיליון סודות, כמו מפתחות גישה וסיסמאות. דיסקורד אמנם מבטלת אוטומטית טוקנים שהיא מזהה בקוד ציבורי, אבל לא כדאי לסמוך על זה.
מה לבקש מהנער לעשות:
- לשמור את הטוקן בקובץ נפרד (מקובל לקרוא לו .env) ולא בתוך קובץ הקוד.
- להוסיף את הקובץ הזה לרשימת הקבצים ש-Git מתעלם מהם, לפני ההעלאה הראשונה.
- לא לשלוח את הטוקן בצילום מסך, בהודעה פרטית או בשרת, גם לא לחבר שמבקש "לעזור".
- אם הטוקן נחשף, להיכנס לפורטל המפתחים וללחוץ על Reset Token מיד.
שאלו את הנער איפה הטוקן שלו שמור. אם התשובה היא "בשורה הראשונה של הקוד", יש לכם שיחה של עשר דקות שתלמד אותו יותר על אבטחה מכל סרטון.
הרשאות ו-Intents: למה הבוט לא קורא הודעות
התקלה הראשונה שכמעט כל נער פוגש נראית כך: הבוט מחובר, מופיע ירוק ברשימת החברים, ולא מגיב לשום פקודה. הסיבה בדרך כלל היא Intents, הגדרות שקובעות לאילו סוגי מידע הבוט מקבל גישה. מאז ספטמבר 2022, הגישה לתוכן ההודעות היא "Intent מוגן". צריך להפעיל אותו ידנית בפורטל המפתחים וגם להצהיר עליו בקוד. בלי זה הבוט רואה שנשלחה הודעה, אבל לא יודע מה כתוב בה.
מעבר ל-Intents יש הרשאות בשרת עצמו. כשמזמינים בוט לשרת, דיסקורד שואלת מה מותר לו: לשלוח הודעות, למחוק הודעות, לנהל תפקידים, להעיף חברים. נערים נוטים לסמן "Administrator" כדי שהכול יעבוד. זה עובד, וזה גם בדיוק מה שהופך טוקן דולף לאסון.
הכלל שכדאי ללמד הוא הרשאה מינימלית: הבוט מקבל רק את מה שהוא צריך. בוט שמברך חברים חדשים צריך לשלוח הודעות בערוץ אחד. הוא לא צריך למחוק ערוצים. זה בדיוק אותו עיקרון שמלמדים באבטחת מידע בארגונים, ונער שמבין אותו בגיל 14 בזכות בוט, יבין אותו גם כשיגיע לנושאים מתקדמים יותר.
עוד נתון שכדאי להכיר: בוט שנכנס ל-100 שרתים ומעלה חייב לעבור תהליך אימות מול דיסקורד, וגישה ל-Intents המוגנים דורשת אז אישור מיוחד. רוב הבוטים של נערים לא יגיעו לשם, אבל אם הבוט של הילד הופך פופולרי בקהילה, זה הרגע שבו העניין עובר ממשחק לפרויקט רציני.
מה נער בן 13 עד 16 יכול לבנות לבד
עם מדריך טוב ביוטיוב וקצת סבלנות, נער שלא תכנת מעולם יכול להגיע לבוט עובד בתוך כמה ערבים. אלה הדברים שבדרך כלל מצליחים לבד:
- פקודה שעונה בטקסט קבוע, למשל !hello שמחזירה ברכה.
- הודעת ברוכים הבאים כשמישהו מצטרף לשרת.
- פקודת קובייה או הגרלה שבוחרת מספר אקראי.
- פקודה שמחזירה מידע על המשתמש, כמו תאריך הצטרפות לשרת.
- מעבר לפקודות Slash (אלה שמתחילות ב-/ ומציגות תפריט), אחרי שהבסיס עובד.
בשלב הזה הנער כבר כתב משתנים, תנאי if ופונקציה או שתיים. זו התקדמות אמיתית, ומגיע לה מחמאה. רק שימו לב לדבר אחד: הרבה פעמים הקוד הועתק כמעט מילה במילה מהמדריך. הבוט עובד, אבל אם תבקשו מהנער להסביר מה עושה השורה עם המילה await, הוא לא תמיד יידע.
איפה הוא ייתקע, ולמה זה לא אשמתו
הקיר מגיע ברגע שהנער רוצה משהו שאין עליו מדריך מוכן. הנה המקומות הנפוצים:
קוד אסינכרוני
ספריית discord.py בנויה על תכנות אסינכרוני: הבוט מטפל בהרבה אירועים במקביל בלי לחכות שכל אחד יסתיים. המילים async ו-await מופיעות בכל מקום. מי שלא מבין אותן כותב קוד שנראה תקין ומקפיא את הבוט כולו, למשל כשהוא מוסיף השהיה של חמש שניות בדרך הלא נכונה. זה נושא שגם סטודנטים בשנה ראשונה מתקשים בו.
שמירת נתונים
בוט שסופר נקודות לכל חבר צריך לזכור אותן גם אחרי שהמחשב נכבה. נער שלא שמע על קבצי JSON או על מסד נתונים כמו SQLite ישמור הכול במשתנה, ויגלה למחרת שכל הנקודות נמחקו. מכאן מתחילה שאלה גדולה יותר: איך מארגנים מידע.
הרצה 24 שעות ביממה
החברים בשרת רוצים שהבוט יעבוד גם כשהנער בבית הספר. אז הוא מחפש "אחסון בוט בחינם", ומוצא שירותים מפוקפקים שמבקשים את הטוקן שלו, או משאיר את המחשב של המשפחה דלוק כל הלילה. הפתרונות הסבירים (שרת ענן קטן, Raspberry Pi בבית) דורשים הבנה בסיסית של לינוקס ושל ניהול תהליכים.
קוד מבינה מלאכותית שאף אחד לא מבין
היום נערים פונים ל-ChatGPT ומקבלים 80 שורות קוד. לפעמים הן עובדות. לפעמים הן כתובות לגרסה ישנה של הספרייה (discord.py עברה שינויים גדולים בגרסה 2.0 ב-2022), והנער לא יודע לזהות את זה. כשמשהו נשבר, הוא מבקש מהבינה המלאכותית לתקן, מקבל קוד חדש, וחוזר חלילה. אחרי שבוע יש לו בוט שעובד חלקית ואפס הבנה של מה קורה בתוכו.
אף אחת מהבעיות האלה לא מעידה שהילד "לא מתאים לתכנות". הן מעידות שהוא הגיע לגבול של מה שאפשר ללמוד ממדריכים קצרים. כאן נדרשים יסודות.
מה אתם יכולים לעשות כבר השבוע
לא צריך לדעת פייתון כדי ללוות את התהליך. כמה צעדים פשוטים:
- בקשו הדגמה. שבו עשר דקות ותנו לנער להראות לכם מה הבוט עושה ואיך. ילד שמסביר מבין טוב יותר, ואתם תראו איפה הוא באמת עומד.
- שאלו על הטוקן ועל ההרשאות. איפה הטוקן שמור? האם לבוט יש הרשאת מנהל? אם כן, למה?
- בדקו את השרתים. באילו שרתים הבוט נמצא, ומי עוד חבר בהם. בוט שהוזמן לשרת של מבוגרים זרים הוא סיבה לשיחה.
- הציבו יעד אחד. במקום "בוט שעושה הכול", הסכימו על פיצ'ר אחד לסוף השבוע, למשל מערכת נקודות שנשמרת בקובץ. יעד מוגדר מונע תסכול.
- אל תשלמו על אחסון לפני שהבוט יציב. אין טעם בשרת ענן לבוט שעוד קורס כל שעה.
אם הנער לומד טוב יותר בתנועה ופחות מול טקסט ארוך באנגלית, כדאי לקרוא את המדריך שלנו על קורס תכנות וסייבר לנוער עם דיסלקציה ולקויות למידה. התיעוד של discord.py כתוב כולו באנגלית טכנית, ולפעמים שם בדיוק נמצא הקושי, ולא בחשיבה התכנותית עצמה.
מתי בוט הופך לקורס פייתון אמיתי
יש סימנים ברורים שהגיע הזמן למסגרת מסודרת. הנער מבלה יותר זמן בהעתקת קוד מאשר בכתיבה. הוא מתוסכל ומאיים לוותר. או להפך, הבוט עובד והוא רוצה לבנות דברים גדולים יותר, אבל לא יודע מאיפה להתחיל. בשלושת המקרים התשובה זהה: הוא צריך יסודות שבונים זה על זה, ולא עוד מדריך של עשר דקות.
מסגרת טובה לא מתחילה מהבוט. היא מתחילה ממשתנים, תנאים, לולאות ופונקציות, עוברת לעבודה עם קבצים, רשימות ומילונים, ורק אחר כך מגיעה לספריות חיצוניות ולתכנות אסינכרוני. ההבדל הוא שהנער כבר יודע לאן הוא הולך. כשהמדריך מלמד מילונים, הוא יודע שזה מה שיחזיק את טבלת הנקודות של הבוט. הלמידה מקבלת משמעות.
ההבדל השני הוא משוב. מדריך ביוטיוב לא מסתכל על הקוד של הילד. מדריך בכיתה כן. הוא רואה שהנער שם את הטוקן בתוך הקוד, שהלולאה שלו רצה פעם אחת יותר מדי, שהוא קורא לפונקציה בלי await. תיקון כזה בזמן אמת חוסך שבועות של ניסוי וטעייה.
במכללת Cyber For You, מוסד מוכר של משרד העבודה (מספר 48898) וספק מוכר במערך התוכניות של משרד החינוך, הקורסים לנוער בנויים סביב פרויקטים. הקורס בינה מלאכותית לנוער מתאים במיוחד לנער שכבר שואל את ChatGPT איך לכתוב את הבוט ורוצה להבין מה קורה מאחורי הקלעים. נער שהתחבר דווקא לצד של הטוקנים, ההרשאות והפריצות יכול להמשיך לקורס סייבר והאקינג לנוער אונליין, שבו אבטחת מידע היא הנושא המרכזי. את הסילבוס המלא, מבנה המפגשים והפרויקט המסכם של כל קורס אפשר לראות בעמוד הקורס עצמו.
מה לבדוק לפני שנרשמים לקורס תכנות לנוער
לא כל קורס שמתהדר במילה "פייתון" מתאים לנער שרוצה לבנות בוט. כדאי לשאול כמה שאלות לפני ההרשמה:
- האם יש פרויקט מסכם שעובד? בקשו לראות דוגמה לפרויקט של בוגר קודם. קורס שמסתיים במבחן בלבד לא ייתן לנער את מה שהוא מחפש.
- מה גודל הקבוצה? בקבוצה גדולה מדי המדריך לא יספיק להסתכל על הקוד של כל אחד.
- האם מלמדים אבטחה בסיסית? שמירת סודות, הרשאות מינימליות וזהירות בהורדת קוד. נער שבונה בוטים צריך את זה.
- האם הקורס מתאים לגיל? בן 13 ובן 17 לומדים אחרת. שאלו מה טווח הגילים בקבוצה.
- מה קורה אחרי הקורס? האם יש המשך, קורס מתקדם או קהילה שבה הנער יכול להמשיך לשאול.
אם הנער רוצה לטעום לפני התחייבות של כמה חודשים, סדנה קצרה בחופשה היא דרך טובה לבדוק אם העניין מחזיק. כתבנו על זה במאמר על סדנת סייבר ותכנות לנוער בחופש סוכות, ואותם שיקולים תקפים גם לחנוכה ולחופש הגדול.
שאלות נפוצות
באיזה גיל אפשר להתחיל לבנות בוט לדיסקורד?
תנאי השימוש של דיסקורד קובעים גיל מינימום של 13 לפתיחת חשבון ברוב המדינות, ולכן זה גם הגיל המעשי להתחלה. מבחינת יכולת, נער בן 13 שקורא אנגלית בסיסית יכול לבנות בוט פשוט בעזרת מדריך. לבוט מורכב יותר הוא יצטרך יסודות בפייתון.
האם בניית בוט לדיסקורד עולה כסף?
לא בשלב הבנייה. פייתון, ספריית discord.py ופורטל המפתחים של דיסקורד חינמיים. הוצאה עלולה להגיע כשרוצים שהבוט ירוץ 24 שעות ביממה על שרת ענן. לבוט קטן זו עלות של כמה דולרים בחודש, ולא כדאי לשלם עליה לפני שהבוט יציב.
האם זה מסוכן לתת לילד לבנות בוט?
הבנייה עצמה לא מסוכנת. הסיכונים הם דליפת טוקן, שעלולה לאפשר לזרים להשתלט על הבוט, והורדת קוד או "כלים" ממקורות לא מוכרים שמכילים נוזקות. שיחה קצרה על שמירת הטוקן והרשאות מינימליות מצמצמת את רוב הסיכון.
האם עדיף ללמוד פייתון או JavaScript לבניית בוטים?
שתי השפות מתאימות. ל-JavaScript יש ספרייה פופולרית בשם discord.js. למתחילים פייתון בדרך כלל נוחה יותר בזכות תחביר קריא וקצר, והיא גם השפה שנלמדת בהרבה מגמות מחשבים בתיכון. היסודות שנלמדים בפייתון עוברים בקלות לשפות אחרות בהמשך.
הילד בונה את הבוט עם ChatGPT. זה בסדר?
זה בסדר ככלי עזר, בתנאי שהוא מבין את הקוד שהוא מקבל. בקשו ממנו להסביר שורה אקראית מהקוד. אם הוא לא מצליח, הוא משתמש בבינה המלאכותית במקום ללמוד ולא כדי ללמוד, וזה הזמן להשלים יסודות.
הצעד הבא
אם הבן או הבת שלכם כבר ביקשו עזרה עם בוט, הסקרנות כבר שם, וזה החלק הקשה. כדי שהבוט הבא שלהם ייכתב מתוך הבנה ולא מתוך העתקה, היכנסו לעמוד קורס הבינה המלאכותית לנוער של Cyber For You, עברו על הסילבוס ועל הפרויקט המסכם, והשאירו פרטים לשיחת התאמה. נשמח לשמוע מה הנער כבר בנה, ולהציע את המסלול שמתאים לגיל ולרמה שלו.