בוט טלגרם כסוכן אישי מותאם

איך יצרתי טלגרם בוט שמבצע עבורי משימות AI מותאמות?

במהלך פרויקט אישי חיפשתי דרך נוחה לעטוף יכולות AI בתוך ממשק זמין ויום-יומי. הבחירה הטבעית הייתה בוט טלגרם: כלי פשוט לשימוש, מהיר ואינטגרטיבי, שגם מאפשר לי להריץ פקודות מותאמות אישית מכל מקום.

החיבור בין טלגרם ל-AWS Lambda

את הבוט בניתי על בסיס המדריך הזה והחלטתי לחבר אותו ל־AWS Lambda – שירות ללא שרת שמריץ קוד לפי טריגרים.
מדריך נוסף נמצא כאן (ובטח יש עוד הרבה מדריכים)
כדי להפעיל את הבוט כראוי, יש להגדיר גם API Gateway שישמש כשכבת ביניים בין טלגרם לבין ה-Lambda (הסבר מלא מופיע במדריך המקורי). הדבר מאפשר לכל עדכון שמגיע מטלגרם לשלוח קריאה ישירה לפונקציית ה-Lambda שלי.

השתמשתי הרבה ב-CloudWatch של AWS:

וגם השתמשתי ב-AWS DynamoDB לשמור ולהשתמש מחדש בערכים

פה אפשר להתנסות בבוט (מקווה שזה לא יעמיס יותר מדי על חשבון ה-AWS שלי)

ניהול משתמשים וזיהוי

אחת הנקודות המעניינות היא היכולת לזהות כאשר אני עצמי עובד מול הבוט. בתוך ה־payload שמגיע מטלגרם ניתן לקבל user_id, שמאפשר לבצע פעולות מותנות לפי המשתמש. חשוב לציין שזו אינה שיטה מאובטחת לגמרי, כיוון שבאופן תאורטי ניתן לזייף user_id. עבור פרויקטים רציניים מומלץ להוסיף שכבת אימות נוספת.

עניין ה-timeout

באופן ברירת מחדל, ל־Lambda יש הגבלת זמן ריצה. כאשר ניסיתי להריץ פקודות AI חיצוניות או קריאות API מורכבות, נדרשתי להגדיל את זמן ה-timeout כדי למנוע עצירה פתאומית של הביצוע. זהו פרמטר שכדאי לשים לב אליו במיוחד בעבודה עם מודלים חיצוניים שעלולים להגיב לאט.

בעיות שכיחות ודרכי פתרון

במהלך השימוש נתקלתי בכמה נקודות שכדאי להכיר מראש:

  • הרצת פקודות כפולה – לעיתים בפקודות פשוטות (שאינן מערבות API חיצוני) הבקשה התבצעה פעמיים. יש לכך הסבר טכני ידוע ופתרונות שונים שהוצעו בקהילה. שווה לבדוק מה מתאים למבנה הבוט.
  • שיהוי בביצוע – לפעמים הבוט מגיב באיחור של כמה דקות. לא מצאתי הסבר חד-משמעי לכך, אך ייתכן שזה קשור לתהליך ה־ cold start של ה-Lambda כאשר הפונקציה לא רצה זמן רב.
  • אבטחת הבוט – ראיתי את הפוסט הזה, אבל לא יודע מה עוד אפשר לעשות

יתרון כלכלי

לשימוש מצומצם, כל המערכת פועלת בתוך ה־Free Tier של AWS. כלומר, אין עלות בפועל עבור הרצות של כמה פקודות ביום, מה שהופך את זה לכלי נהדר לפרויקטים אישיים או ניסויים עם AI.


הטמעה של טלגרם בוט מול Lambda מאפשרת שליטה אלגנטית במשימות יומיומיות בעזרת AI – גם בצורה חסכונית וגם מודולרית. זה פרויקט שמתאים הן למפתחים בתחילת הדרך שרוצים לנסות שילוב שירותי ענן, והן למפתחים מנוסים שמבקשים להרחיב את כלי העבודה האישיים שלהם.

מוזמנים לכתוב לי בתגובות את ההערות שלכם + רעיונות למשימות עבור בוט טלגרם

עבודה עם bash

עבודה עם Bash: איך בניתי כלי אוטומציה לאתרי WordPress

בחודשים האחרונים יצא לי להעמיק בעולם של Bash scripting, בעיקר בשילוב עם WP-CLI, כלי שורת הפקודה הרשמי של WordPress. מהר מאוד גיליתי את העוצמה והגמישות שיש בסקריפטים – איך באמצעות כמה שורות קוד אפשר לעשות בצורה אוטומטית תהליכים שבעבר דרשו שעות עבודה ידנית.

במיוחד הצלחתי לגבש שני כלים שימושיים, שניהם מבוססי שילוב בין אלבומי Google Photos לבין WordPress:

כלי 1: יצירת רשת אתרים מאלבומי Google

המטרה הייתה להפוך כל אלבום Google לאתר עצמאי בתוך רשת מולטיסייט של WordPress. בתוך האתר ניתן לחלק את התמונות לדפים נפרדים, לפי התאריכים המופיעים בשמות הקבצים.
כך למעשה, כל אלבום הופך למבנה מוכן של אתר תמונות, עם חלוקה פנימית ברורה וללא צורך בהעלאה ידנית או מיון.
דוגמה חיה אפשר לראות כאן

כלי 2: יצירת אתר תדמית מאלבומי Google

בפרויקט נוסף, פיתחתי סקריפט שמבצע את התהליך בצורה אחרת: הפעם כל אלבום Google יוצר דף חדש באתר WordPress. בתוך הדף נוצרת גלריה עם תמונות האלבום, ובנוסף קיימת אפשרות להוסיף טקסט מותאם אישית בראש הדף, מעל הגלריה.
כך נוצר בצורה כמעט אוטומטית אתר תדמית שלם, המבוסס על אלבומים מוכנים.
אפשר להשתמש בקובץ CSV להגדרות של האתר

היתרונות של הגישה

  • אוטומציה מלאה – האתר נבנה לבד, ללא הקלדה חוזרת ונשנית ב־WordPress.
  • מהירות הטמעה – פרויקט שלוקח שעות (ואף ימים) יכול להפוך לענין של דקות.
  • גמישות גבוהה – קל לשנות את הסקריפטים כך שיתאימו למבנים אחרים או לסוגי תוכן נוספים.

האתגרים שנתקלתי בהם

כמו בכל תהליך אוטומטי, גם כאן לא הכל מושלם:

  • הפעלה מסיבית של סקריפטים כאלה עלולה לגרום לניצול משמעותי של משאבי השרת, ובעיקר חשבונות שיתופיים (shared hosting) יכולים ליצור בעיות של ניצול יתר של המשאבים
  • אפשר לחלק תמונות רק לפי אלבומים או לוגיקה לפי שם הקובץ

העברת שרת

אחרי כמה שנים טובות שאיחסנתי את האתר הזה (יחד עם אתרים נוספים) ב-BlueHost, החלטתי לעבור שרת. הסיבות שלי היו דמי חידוש גבוהים (מחיר פי 3 עד פי 4 מאשר חבילה חדשה) וגם לפעמים ממשק הניהול לא היה זמין.

הצרכים שלי משירות אכסון הן כמות אתרים לא מוגבלת, גישת SSH (כולל WP-CLI), הוספת SSL לכל האתרים שבאכסון בחינם, ממשק cPanel, וכמובן ללא הגבלת נפח דיסק. רוב השירותים היום נותנים את כמעט כל זה בחבילה הבינונית / מתקדמת שלהם. לגבי נפח קבצים – היום כמעט כולם לא מגבילים את זה, אבל מגבילים את מספר ה-Inodes בשרת.

בחרתי ב-GreenGeeks בעיקר בגלל הפן האקולוגי שלהם, בנוסף לעובדה שבגלל שהם אירופיים / גרמנים אפשר לסמוך יותר על הפרטיות ואבטחת המידע שלהם. בנוסף, יש להם גיבויים יומיים בחינם.

היו לי כ-10 אתרים להעביר, ןזה היה זמן טוב לעשות סדר בעניין, ולהוריד אתרים שכבר לא רציתי לאחסן.

לא מצאתי דרך להעביר את חשבונות המיילים באופן מרוכז, כך שנאלצתי ליצור אותם מחדש. בנוסף מצאתי שהרבה חברות כבר לא נותנות להגדיר forward mail account ל-Gmail (הסבר מלא פה), כך שיצרתי כתובת מייל, והגדרתי ב-Gmail שימשוך אותה.

את רוב האתרים העברתי בדרך הישנה – כיווץ הספרייה וה-DataBase, את רוב הקבצים האלו משכתי ישר בשרת החדש דרך SSH + CURL, פרשתי (extract), יצרתי את ה-DataBase הנדרשים ושיניתי הגדרות בהתאם.

ניסיתי להשתמש בתוספים להעברת חלק מהאתרים, אבל לא מצאתי משהו טוב בחינם שאני יכול להמליץ עליו…

באותה הזדמנות, גם הפכתי כמה אתרים קטנים שלי לרשת אתרים (MultiSite), כדי לפשט את העדכונים שלהם.

לסיכום: אני שמח על התהליך בעיקר בגלל החיסכון הכספי (70$ לשנה, כולל דומיין, לעומת 59$ כל 3 חודשים), ובגלל שהמעבר גרם לי לעשות סדר בכל מה שהיה בשרת 🙂

סנכרון תמונות מאלבום גוגל לאתר

רציתי לעשות אתר שיהיה קל להעביר תמונות (ווידאו) מאלבום גוגל, בלי שאני אצטרך להוריד למחשב שלי ולהעלות המון תמונות.

קודם כל – אני משתמש באכסון של blueHost, שנותנים גישת SSH ו-wp-cli
גם א/נשים בלי ידע טכני יכולים לעבוד לפי המדריך הזה, אבל צריך לא לפחד מלכתוב פקודות (Command Line), ואני מקווה ששמתי פה מספיק קישורים להסברים.

אחרי שהתחברתי לחשבון שלי עם SSH, שמתי שם rclone – לא צריך להתקין את זה (ההתקנה דורשת הרשאת root בשרת, שאין לי כמובן), רק להוריד ולפרוס. אח”כ בשביל לגשת לזה – צריך לקרוא לפקודה rclone עם המיקום שלה.

הפקודות שאני השתמשתי בשביל התקנת rclone

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
mv rclone-vVERSION-NO-linux-amd64/ rclone
* שימו לב בפקודה האחרונה מה מס’ הגירסא שאצלכם

הגדרתי את rclone להתחבר לחשבון Google Photos שרציתי. שימו לב שבגלל שעובדים על מחשב מרוחק – אי אפשר להשתמש בauto config, עונים NO על השאלה “Use auto config?”, ואז צריך להתחבר לחשבון Google ממחשב אחר שבו יש דפדפן, להתקין שם rclone ולהכניס את הפקודה:

rclone authorize "google photos"

ואז מקבלים לינק שצריך לפתוח בדפדפן (מתחיל ב: http://127.0.0.1:53682/auth) וצריך לאשר לגוגל לגשת לתמונות. הוראות מפורטות לשלב הזה – כאן

עכשיו יוצרים ספרייה שאליה rclone יסנכרן / יעתיק את התמונות מהאלבום המבוקש (מי שלא מכיר – תחפשו את הפקודה mkdir).

הפקודה לסנכרון נראית משהו כזה:

rclone sync RcloneName:album/AlbumName Folder-for-the-Photos –ignore-existing

החלקים המודגשים אלו המקומות שבהם צריך לשנות לפי מה שאתם יצרתם (RcloneName – השם שנתתם לחיבור הזה בהגדרות של rclone, AlbumName – השם של האלבום שאתם רוצים להעתיק מGoogle Photos, Folder-for-the-Photos – השם של הספרייה בשרת שם אתם רוצים לשמור את התמונות).
אפשר גם להוסיף את הפרמטר –max-age 1d כדי לסנכרן רק את התמונות מהיום האחרון

זה עובד די מהר, ובקרוב התמונות מGoogle Photos יהיו כבר בשרת.

הפקודה הבאה משתמשת בwp-cli לייבא את התמונות לספריית המדיה של האתר.
שימו לב, שצריך להיות בספרייה של האתר (או ספרייה כלשהיא בתוכה) כדי שזה ייבא לאתר שלכם (חשוב לשים לב, בעיקר כשיש כמה אתרים מאוכסנים על אותו חשבון בשרת).

for x in Folder-for-the-Photos/*.jpg; do
if test -f “../../wp-content/uploads/2020/08/$x”; then
echo “$x exists.”
else
wp media import $x –preserve-filetime
fi
done

יש פה בדיקה שהתמונות לא קיימות כבר. אני בדקתי את זה מול הספרייה של החודש הנוכחי, וכמובן צריך לשנות זאת לפי החודש שבו אולי התמונות כבר נמצאות

מזל טוב, סיימתם.

עכשיו התמונות נמצאות בספריית המדיה שלכם, ואתם יכולים להכניס אותן לכל מקום באתר.

אני משתמש בינתיים בתוסף Modula כדי ליצור גלריית תמונות, כי אהבתי את הצורה שהוא מסדר את התמונות בגלריה, אבל הגירסא החינמית שלו מוגבלת ל20 תמונות בגלריה. אפשר כמובן להשתמש בגלריית תמונות הבסיסית של וורדפרס, או בכל תוסף אחר. מוזמנים/ות לכתוב בתגובה על תוספים יותר טובים לגלריות.

קבלת החלטות בקהילה‎‎

אפשרויות / מתודות לקבלת החלטות בקהילה

תמצות מתורגם של אפשרויות לקבלת החלטות בקבוצה (לפי אתר Decide Better Together):

דיאלוג קהילתי (אתר “תכנית גישורים”)

פוסט של חן צבי על דוגמא לקבלת החלטות מהירה

חזרתי לפה

המון זמן לא כתבתי פה, עכשיו חזרתי. וזה גם פוסט ראשון פה שאני כותב עם גוטנברג.

אחרי שלא מצאתי איך לקבוע בבלוק של גוטנברג שזה עברית (מה שנקרא כיווניות RTL), יצרתי CSS class עם המאפיין של direction: rtl, ואז אני נותן לכל בלוק את הclass הזה.
אשמח לשמוע על רעיונות יותר מוצלחים 🙂
(האתר מוגדר כאנגלית, ורק חלק מהפוסטים הם או חלקם בעברית)

עדיין מנסה לראות מה להכניס לבלוג.

בינתיים מאמר מצויין על אבטחת אתר וורדפרס: https://www.computec.co.il/article/%D7%90%D7%91%D7%98%D7%97%D7%AA-%D7%90%D7%AA%D7%A8-%D7%95%D7%95%D7%A8%D7%93%D7%A4%D7%A8%D7%A1/

SSL – website security

למי שחדש בתחום – הSSL זה אישור על מהימנות האתר, וכשגולשים לאתר כזה הכתובת מתחילה ב- https:// ולא ב- http:// . בנוסף, ברוב הדפדפנים יש מנעול ירוק בפינת הכתובת שמראה שהאתר מאובטח (וגם התראה כשמנסים להגיע לאתר שמתחזה למאובטח, אבל ישנה בעיה עם אישור האבטחה / מהימנות שלו). כשבעצם זה מציין ש תעבורת האינטרנט בין הלקוח והשרת מוצפנת.

בעבר, הSSL היה רק תקן שנדרש לאתרי מסחר בלבד, אבל לאחרונה הSSL נהפך לסטנדרט.

גוגל הודיעו שהם יורידו את הדירוג לאתרים שאין להם SSL.

קיימים כבר שירותים שמציעים אישורי  SSL בחינם.

מאמרים בנושא:

The Easiest Way To Make WooCommerce SSL certified store

BlueHost – How to activate a free WordPress SSL Certificate

פלגינים מעניינים לוורדפרס – Interesting plugins for WordPress

כללי – General:

Accessible Poetry – הוספת סרגל נגישות לאתר

Ceceppa Multilingua – תוסף אלטרנטיבי לריבוי שפות

PDF Embedder – הטמעת קבצי PDF באתר

No Page Comment – חסימת תגובות בדפים מסויימים או סוגי תוכן

WPtouch Mobile Plugin – התאמת האתר / תבנית למובייל

Safe AVG – הוספת תמונות בפורמט SVG בצורה בטוחה לאתר

תכנות – Programming:

Plugin Organizer – שינוי סדר טעינת הפלגינים וטעינה סלקטיבית בכל דף

Plugin Load Filter – טעינת פלגינים בצורה סלקטיבית  בכל דף

Async JavaScript – טעינת קבצי הJS בצורה אסינכרונית

Query Monitor – הרבה מידע למתכנת על טעינת הדף

P3 (Plugin Performance Profiler) – יצירת דו”ח ביצוע לאתר, כדי לראות מה הפלגינים שמאטים אותו

WP Safe Updates – בדיקת עדכונים ב”ארגז חול” לפני שמיישמים אותם באתר

CWIS Antivirus Scanner – סריקת האתר עבור חולשות ופרצות (יכול להביא יותר מדי אזהרות)

WP PHP console – הצגת פרמטרים ושגיאות של PHP בקונסולה של כלי הפיתוח בדפדפן כרום

אבטחה – Security:

Wordfence – אחד מתוספי האבטחה (וסט כלים) הכי טובים, כולל חומת-אש לאתר.

Sucuri Security – ניטור, סריקת נוזקות והקשחת אבטחה. תוסף נוסף לאבטחת האתר.

WordPress Security – אבטחה בוורדפרס

Security Plugins:

Wordfence Security

Sucuri Scanner

iThemes Security (formerly Better WP Security)

Exploit Scanner – just scanning

WPScan –  black box WordPress vulnerability scanner (not plugin)

Articles:

How to Secure WordPress Website

How to Clean a Hacked WordPress Site

How to Clean a Hacked WordPress Site

Hacking WordPress Sites on Shared Servers

How to Identify and Fix a Hacked WordPress Website

How to Find a Backdoor in a Hacked WordPress Site and Fix It

מאמר בעברית על אבטחת אתר וורדפרס