Advertisement
l1von

Рассылка ВК

Jul 26th, 2021
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import messagebox
  3. import requests
  4. import json
  5. import time
  6.  
  7. class LoginApp(tk.Tk):
  8.     def __init__(self):
  9.         super().__init__()
  10.         self.geometry('400x115')
  11.  
  12.         self.token = tk.Entry(self)
  13.         self.text = tk.Entry(self)
  14.  
  15.         self.token.insert(tk.END, 'Токен')
  16.         self.text.insert(tk.END, 'Текст для рассылки')
  17.  
  18.         self.token_btn = tk.Button(self, text="Рассылка", command=self.sender)
  19.         self.clear_btn = tk.Button(self, text="Очистить", command=self.clear_form)
  20.         self.stop_btn = tk.Button(self, text='Выйти', command=self.stop)
  21.  
  22.         self.token.pack()
  23.         self.text.pack()
  24.         self.token_btn.pack(fill=tk.BOTH)
  25.         self.clear_btn.pack(fill=tk.BOTH)
  26.         self.stop_btn.pack(fill=tk.BOTH)
  27.  
  28.     def sender(self):
  29.         if self.token.get() == '':
  30.             messagebox.showerror('Ошибка', 'Вы не ввели токен!\nВставьте в первое поле ввода токен от группы ВК с которой будет идти рассылка.')
  31.         elif self.text.get() == '':
  32.             messagebox.showerror('Ошибка', 'Вы не ввели текст для рассылки\nВставьте во второе поле ввода текст, который будет отправляться.')
  33.         elif 'Токен' in self.token.get():
  34.             messagebox.showerror('Ошибка', 'Удалите слово токен из первого поля и вставьте токен от группы ВК')
  35.         else:
  36.             start = time.time()
  37.             try:
  38.                 r = requests.get(f'https://api.vk.com/method/messages.getConversations?access_token={self.token.get()}&v=5.130&count=200')
  39.                 conversations = r.json()
  40.                 rng = conversations['response']['count']
  41.  
  42.                 for i in range(rng):
  43.                     if conversations['response']['items'][i]['conversation']['peer']['type'] == 'user' and conversations['response']['items'][i]['conversation']['can_write']['allowed']:
  44.                         peerid = conversations['response']['items'][i]['conversation']['peer']['id']
  45.                         req = requests.post('https://api.vk.com/method/messages.send', data={'access_token': self.token.get(), 'peer_id': int(peerid), 'random_id': 0, 'message': self.text.get(), 'v':"5.130"}).json()
  46.  
  47.                 messagebox.showinfo('Удачно!', 'Рассылка завершена за {} сек'.format(round(time.time() - start, 1)))
  48.             except Exception as error:
  49.                 messagebox.showerror('Ошибка', 'Возникла ошибка, возможно вы неверно ввели токен...\nОшибка: {}'.format(error))
  50.  
  51.     def clear_form(self):
  52.         self.token.delete(0, tk.END)
  53.         self.text.delete(0, tk.END)
  54.         self.token.focus_set()
  55.  
  56.     def stop(self):
  57.         self.destroy()
  58.  
  59. if __name__ == "__main__":
  60.     app = LoginApp()
  61.     app.title('Рассылка Вконтакте')
  62.     app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement