Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: UTF-8 -*-
- #!/usr/bin/python
- def ru(x): return x.decode('utf-8')
- import dbus, vk_api
- from vk_api.longpoll import VkLongPoll, VkEventType
- from time import sleep#, time
- from sys import setrecursionlimit
- setrecursionlimit(9999999)
- # wall doc audio photo sticker money_request
- attachments={}
- attachments["wall"]="запись со стены"
- attachments["doc"]="документ"
- attachments["audio"]="аудио"
- attachments["photo"]="фото"
- attachments["sticker"]="стикер"
- attachments["money_request"]="запрос денег"
- attachments["geo_provider"]="карта"
- attachments["audiomsg"]="голосовое сообщение"
- attachments["animation"]="стикер"
- attachments["video"]="видео"
- #attachments[""]=""
- bus = dbus.SessionBus()
- object = bus.get_object('org.freedesktop.Notifications','/org/freedesktop/Notifications')
- interface = dbus.Interface(object,'org.freedesktop.Notifications')
- #print(interface.GetCapabilities())
- def send_notify(f_name, l_name, c_name, txt, attach):
- if len(c_name) == 0:
- top_txt=f_name+": "+txt+attach
- large_txt=f_name+" "+l_name
- small_txt=txt+attach
- else:
- top_txt=c_name+": "+txt+attach
- large_txt=c_name
- small_txt=f_name+": "+txt+attach
- interface.Notify("Контактик",
- 0,
- "icon-m-notifications",
- large_txt,
- small_txt,
- dbus.Array(["default", ""]),
- dbus.Dictionary({"x-nemo-preview-body": top_txt,
- "category": "x-nemo.batterynotifier"},
- signature='sv'),
- 0)
- sleep(0.01)
- def send_notif1y(f_name, l_name, c_name, txt, attach):
- interface.Notify("VK",
- 0,
- "icon-m-notifications",
- "1верхняя строка уведомления",
- "1нижняя строка уведомления",
- dbus.Array(["default", ""]),
- dbus.Dictionary({"x-nemo-preview-body": "1текст вверху",
- "category": "x-nemo.batterynotifier"},
- signature='sv'),
- 0)
- #send_notify("алежа", "маркел", "я всех заебал")
- def response(txt, user, attach, chatid):
- global vk
- #print("response called")
- txt = txt.replace('"',
- '\"')
- if user[1]>0:
- c_name=''
- if user[0] == 'user':
- f_name, l_name = user_parse(user)
- if chatid>0:
- data=vk.messages.getChat(chat_id=chatid)
- #l_name = "{"+n['title']+"}"
- c_name = data['title']
- else:
- f_name, l_name = group_parse(user)
- #if len(txt) == 0: txt="Вложение"
- send_notify(f_name, l_name, c_name, txt, attach)
- def user_parse(uid):
- global vk
- data = vk.users.get(user_ids=uid)
- fn=data[0]['first_name']
- ln=data[0]['last_name']
- return fn, ln
- def group_parse(uid):
- global vk
- data = vk.groups.getById(group_ids=uid)
- fn=data[0]['name']
- ln=""#data[0]['screen_name']
- return fn, ln
- def main():
- global vk
- """ Пример использования longpoll
- https://vk.com/dev/using_longpoll
- https://vk.com/dev/using_longpoll_2
- """
- print("start")
- login, password = 'login', 'password'
- vk_session = vk_api.VkApi(login, password)
- vk = vk_session.get_api()
- try:
- vk_session.auth(token_only=True)
- except vk_api.AuthError as error_msg:
- print(error_msg)
- return
- longpoll = VkLongPoll(vk_session)
- try:
- # while 1:
- for event in longpoll.listen():
- # print("pre onl")
- # if time() > onl+300:
- # vk.account.setOnline(voip=0)
- # onl=time()
- # print("onl "+str(onl))
- if event.type == VkEventType.MESSAGE_NEW:
- #print('New message:')
- attach=""
- chatid=0
- if event.from_me:
- #print('From ME to: ', end='')
- user=['user', -1]
- elif event.to_me:
- try:user=['user', event.user_id]#'For me from: '#, end=''
- except:user=['group', event.group_id]#'For me from: '#, end=''
- if 'fwd_count' in event.raw[6]:
- attach=" {пересланные: "+event.raw[6]['fwd_count']+"}"
- elif len(event.raw[7])>0:
- print(event.raw[7])
- if 'attach1_kind' in event.raw[7]:
- attach=" {"+attachments[event.raw[7]['attach1_kind']]+"}"
- elif 'attach1_type' in event.raw[7]:
- attach=" {"+attachments[event.raw[7]['attach1_type']]+"}"
- elif 'geo_provider' in event.raw[7]:
- attach=" {"+"карта"+"}"
- #else: attach=""
- if str(event.raw[3]).startswith('200'):
- tmp=str(event.raw[3])
- chatid=int(tmp[tmp.rfind('0')+1:])
- # else:chatid=0
- #if event.from_user:
- # print(event.user_id)
- elif event.from_chat:
- print(event.user_id, 'In beseda1', event.chat_id)
- #elif event.from_group:
- # print('Groups', event.group_id)
- txt=event.text
- response(txt, user, attach, chatid)
- #print()
- # elif event.type == VkEventType.USER_TYPING:
- # print('Printing ', event.user_id)
- # if event.from_user:
- # print(event.user_id)
- # elif event.from_group:
- # print('Admin group', event.group_id)
- # elif event.type == VkEventType.USER_TYPING_IN_CHAT:
- # print('Printing ', event.user_id, ' in beseda', event.chat_id)
- # elif event.type == VkEventType.USER_ONLINE:
- # print('User', event.user_id, 'online', event.platform)
- # elif event.type == VkEventType.USER_OFFLINE:
- # print('User', event.user_id, 'offline', event.offline_type)
- # else:
- # print(event.type, event.raw[1:])
- # try:print(event.type, event.raw[1:])
- # except:print('ascii error')
- sleep(0.01)
- except:
- pass
- #onl=time()-301
- #2397354_109347657_1a8539d301563350ad
- # Если нас запускают, а не подключают к какому то проекту то...
- if __name__ == '__main__':
- # Запускаем главную функцию
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement