أنشئ Twitter Bot في Python باستخدام Tweepy

نظرًا لأن حوالي 15 ٪ من Twitter يتكون من روبوتات ، فقد أردت تجربة يدي في ذلك. لقد بحثت في Google عن كيفية إنشاء روبوت على Twitter وتم إحضاري إلى تطبيق ويب مصمم بشكل واضح. سمح لك بإنشاء روبوت يرغب في تغريدة أو متابعتها أو إعادة تغريدها بناءً على كلمة رئيسية. كانت المشكلة أنه يمكنك فقط إنشاء روبوت واحد لوظيفة واحدة.

لذلك قررت كتابة رمز بوت بنفسي باستخدام Python ومكتبة Tweepy.

اقامة

أولاً ، قمت بتنزيل Tweepy. يمكنك القيام بذلك باستخدام مدير حزمة النقطة.

pip install tweepy

يمكنك أيضًا استنساخ مستودع GitHub إذا لم يكن لديك نقطة مثبتة.

git clone //github.com/tweepy/tweepy.gitcd tweepypython setup.py install

ستحتاج إلى استيراد Tweepy و Tkinter (لواجهة GUI).

import tweepyimport Tkinter

شهاداته

بعد ذلك ، نحتاج إلى ربط حساب Twitter الخاص بنا بنص Python الخاص بنا. انتقل إلى apps.twitter.com وقم بتسجيل الدخول باستخدام حسابك. أنشئ تطبيق Twitter وأنشئ مفتاح المستهلك وسر العميل ورمز الوصول ورمز الوصول السري. أنت الآن على استعداد للبدء!

تحت بيانات الاستيراد الخاصة بك ، قم بتخزين بيانات الاعتماد الخاصة بك ضمن متغيرات ثم استخدم الكتلة الثانية من التعليمات البرمجية لمصادقة حسابك مع tweepy.

consumer_key = 'consumer key'consumer_secret = 'consumer secrets'access_token = 'access token'access_token_secret = 'access token secret'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)auth.set_access_token(access_token, access_token_secret)api = tweepy.API(auth)

للتحقق مما إذا كان برنامجك يعمل ، يمكنك إضافة:

user = api.me()print (user.name)

يجب أن يعيد هذا اسم حساب Twitter الخاص بك في وحدة التحكم.

بناء الروبوت

يهدف هذا الروبوت إلى:

  1. اتبع كل من يتابعك.
  2. أضف تغريدة إلى المفضلة وأعد تغريدها بناءً على الكلمات الرئيسية.
  3. الرد على مستخدم بناءً على كلمة أساسية.

خطوة واحدة هو أسهل، يمكنك ببساطة حلقة من خلال أتباعك ثم اتبع كل واحد.

for follower in tweepy.Cursor(api.followers).items(): follower.follow() print ("Followed everyone that is following " + user.name)

في هذه المرحلة للتأكد من عمل الكود الخاص بك ، يجب عليك تسجيل الدخول إلى Twitter ومشاهدة زيادة الأشخاص الذين تتابعهم.

من هذه النقطة فصاعدًا ، إلى جانب إعداد الملصقات وتعبئتها في واجهة المستخدم الرسومية ، أقوم بترميز كل شيءتحت الوظيفة mainFunction().

def mainFunction(): #The code

قد تكون قادرًا على رؤية إلى أين يتجه هذا. من أجل تفضيل تغريدة أو إعادة تغريدها ، يمكننا استخدام حلقة for وعبارة try مثل هذا:

search = "Keyword"
numberOfTweets = "Number of tweets you wish to interact with"
for tweet in tweepy.Cursor(api.search, search).items(numberOfTweets): try: tweet.retweet() print('Retweeted the tweet')
 except tweepy.TweepError as e: print(e.reason)
 except StopIteration: break

لتفضيل تغريدة ، يمكنك ببساطة استبدال ملف

tweet.retweet()

مع

tweet.favorite()

للرد على مستخدم بناءً على كلمة رئيسية ، نحتاج إلى تخزين اسم المستخدم ومعرف تويتر الخاصين بهما.

tweetId = tweet.user.idusername = tweet.user.screen_name

يمكننا بعد ذلك إجراء حلقة عبر التغريدات وتحديث حالتنا (سقسقة) عند كل مستخدم.

phrase = "What you would like your response tweet to say"
for tweet in tweepy.Cursor(api.search, search).items(numberOfTweets): try: tweetId = tweet.user.id username = tweet.user.screen_name api.update_status("@" + username + " " + phrase, in_reply_to_status_id = tweetId) print ("Replied with " + phrase) except tweepy.TweepError as e: print(e.reason)
 except StopIteration: break

إذا كنت ترغب في استخدام البرنامج النصي فقط من خلال الجهاز وتحديث الكود في كل مرة ترغب في تشغيله ، فقد أكملت برنامج الروبوت الخاص بك.

إنشاء واجهة المستخدم الرسومية

يمكننا إنشاء تطبيق واجهة مستخدم رسومية يأخذ مدخلاتنا للكلمة الرئيسية التي ترغب في البحث عنها وما إذا كنت ترغب في تفضيل تغريدة أم لا.

نحتاج أولاً إلى تهيئة Tkinter وإعداد التخطيط.

لإنشاء واجهة المستخدم الخاصة بنا ، سيكون لدينا سبع تسميات للبحث وعدد التغريدات والرد. بالإضافة إلى الأسئلة التي تريد الرد عليها ، وتفضيلها ، وإعادة تغريد التغريدة ، ومتابعة المستخدم.

تذكر رمز أدناه هو من الخارج و فوق لدينا mainFunction().

root = Tk()
label1 = Label( root, text="Search")E1 = Entry(root, bd =5)
label2 = Label( root, text="Number of Tweets")E2 = Entry(root, bd =5)
label3 = Label( root, text="Response")E3 = Entry(root, bd =5)
label4 = Label( root, text="Reply?")E4 = Entry(root, bd =5)
label5 = Label( root, text="Retweet?")E5 = Entry(root, bd =5)
label6 = Label( root, text="Favorite?")E6 = Entry(root, bd =5)
label7 = Label( root, text="Follow?")E7 = Entry(root, bd =5)

نحتاج أيضًا إلى حزم كل ملصق بحيث يظهر ثم استدعاء وظيفة الجذر في حلقة بحيث تظل على الشاشة ولا تغلق على الفور.

ما يلي هو الشكل الذي تبدو عليه تعبئة الملصق الأول. لقد حزمت جميع الملصقات الموجودة أسفل ملف mainFunction().

label1.pack()E1.pack()
root.mainloop()

If you only ran your GUI code, it should look something like this:

However, inputing text into the labels or clicking the submit button will do nothing at this point. As the interface is not yet connected to the code.

In order to store the user input in the labels, we need to use the .get() function. I used individual functions for each label.

def getE1(): return E1.get()

Then in my mainFunction(), I called the function getE1() and stored the input into a variable. For E1 it looks like this:

getE1()search = getE1()

You must do this for every label. For the numberOfTweets label make sure to convert the input into an integer.

getE2()numberOfTweets = getE2()numberOfTweets = int(numberOfTweets)

For the last four labels (Reply, Favorite, Retweet and Follow), we need to check to see if the input from the user is “yes” or “no” in order to run that given function or not. This can be accomplished through if statements.

This would be the code for the reply function:

if reply == "yes":
 for tweet in tweepy.Cursor(api.search, search).items(numberOfTweets): try: tweetId = tweet.user.id username = tweet.user.screen_name api.update_status("@" + username + " " + phrase, in_reply_to_status_id = tweetId) print ("Replied with " + phrase) except tweepy.TweepError as e: print(e.reason)
except StopIteration: break

For the favorite, retweet and follow functions simply replace the reply with “retweet”, “favorite” and “follow”. Then copy and paste the code you wrote above for each one underneath the if statement.

Now we just need to add the submit button and tell it to call the mainFunction() and execute the code for our Twitter Bot. Again, don’t forget to pack it!

submit = Button(root, text, command = mainFunction)

هذا هو! بعد تشغيل برنامج الروبوت النصي الخاص بك ، يجب تشغيل تطبيق واجهة المستخدم الرسومية وستكون قادرًا على الرد على المستخدمين وإعادة تغريدهم وتفضيلهم ومتابعتهم.

باستخدام Twitter Bot ، قمت بإنشاء حساب FreeWtr الذي يدعو إلى استخدام مياه الصنبور المفلترة فوق المياه المعبأة في زجاجات. هنا لقطة من الملف الشخصي.

هنا هو كود المصدر الكامل على جيثب.