• Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007, Я смог всё починить, если интересно то вот как:
    elif re.findall('!Рассылка', reseived_message):
    					if event.object.message['from_id'] in admins:
    						for id in users:
    							try:
    								write_messages_us(id, (re.sub(r'!Рассылка', " ", reseived_message)))
    							except Exception as ex:
    								print("Ошибка")
    					else:
    						write_messages(sender, "У вас нет прав")
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007, Я попробовал заменить if id == 52525252: на if 52525252 in users: и теперь рассылка идёт всем пользователям, но всё ещё абсолютно все могут делать рассылку
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007, Вот ещё что, рассылка приходит только тому человеку, чей айди написан тут: if id == мой id:, тоесть код вообще не так работает
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007, Я поменял строчку elif "!Рассылка" in reseived_message: на elif re.findall('!Рассылка', reseived_message):, ничего не изменилось
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007, user_id=id убрал эту строчку, она была не нужна.
    elif "!Рассылка" in reseived_message:
    Я этой строчкой вроде просто проверяю, есть ли фраза "!Рассылка" в сообщении. "Если "!Рассылка" есть в полученном сообщении, то срабатывает
    for id in users:
    						if id == 245000060:
    							try:
    								write_messages_us(id, (re.sub(r'!Рассылка', " ", reseived_message)))
    							except Exception as ex:
    								print("Ошибка")
    						else:
    							write_messages(sender, "У вас нет прав")
    "
    Или я что-то не понимаю
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007,
    # -*- coding: utf8 -*-
    import vk_api
    import random
    import requests
    import urllib3
    import re
    
    from vk_api import VkUpload
    from vk_api.utils import get_random_id
    from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
    from infobot import opozd
    from infobot import anek
    from users import users
    
    while True:
    	try:
    		def write_messages(sender, message):
    			authorize.method('messages.send', {'chat_id': sender, 'message': message, 'random_id': get_random_id(), 'attachment': ','.join(attachments)})
    		def write_messages_us(user_id, message):
    			authorize.method('messages.send', {'peer_id': user_id, 'message': message, 'random_id': get_random_id(), 'attachment': ','.join(attachments)})
    		def write_messages_stick(sender, number,):
    			authorize.method('messages.send', {'chat_id': sender, 'sticker_id': number, 'random_id': get_random_id()})
    
    
    
    		token = 'токен'
    		image = "r.jpg" 
    		authorize = vk_api.VkApi(token = token)
    		longpoll = VkBotLongPoll(authorize, group_id = id группы)
    		upload = VkUpload(authorize)
    		for event in longpoll.listen():
    			if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat and event.message.get('text') !="":
    				reseived_message = event.message.get('text')
    				sender = event.chat_id
    				attachments = []
    				upload_image = upload.photo_messages(photos=image)[0]
    				stickers = ['162', '53826', '48', '4342', '9060', '10256', '10676', '2467', '2164', '9332', '53832', '53823']
    				t = ['1', '2']
    				if reseived_message == "Привет" or reseived_message == "привет" or reseived_message == "Бот привет" or reseived_message == "Бот, привет":
    					write_messages(sender, "Ассалам алейкум уа рахматуллахи уа баракатух")
    				elif reseived_message == "Пока":
    					write_messages(sender, "До свидания")
    				elif reseived_message == "Расписание" or reseived_message == "расписание" or reseived_message == "У нас завтра пары есть?" or reseived_message == "Есть пары завтра?" or reseived_message == "Скиньте расписание" or reseived_message == "Где мы?" or reseived_message == "Где мы" or reseived_message == "Дайте расписание" or reseived_message == "дайте расписание" or reseived_message == "Завтра пары есть?" or reseived_message == "завтра пары есть?" or reseived_message == "Завтра пары есть" or reseived_message == "завтра пары есть":
    					write_messages(sender, attachments.append('photo{}_{}'.format(upload_image['owner_id'], upload_image['id'])))
    				elif reseived_message == "Политика" or reseived_message == "Мировая политика и международные отношения" or reseived_message == "политика" or reseived_message == "Политология" or reseived_message == "политология":
    					write_messages(sender, "📅Консультация в 16:00-17:20, 11 мая\nКабинет №808\nЭкзамен в 10:40, 13 мая\nКабинет №1207")
    				elif reseived_message == "Английский" or reseived_message == "Иностранный язык" or reseived_message == "Англ":
    					write_messages(sender, "📅Консультация в 14:30-15:50, 11 мая\nКабинет №808\nЭкзамен в 10:40, 21 мая\nКабинет №902")
    				elif reseived_message == "Теория и практика" or reseived_message == "ТиПСсО" or reseived_message == "Теория и практика связей с общественностью":
    					write_messages(sender, "📅Консультация в 8:50-10:10, 12 мая\nКабинет №904\nЭкзамен в 13:20, 17 мая\nКабинет №1207")
    				elif reseived_message == "Опоздаю" or reseived_message == "Опаздываю" or reseived_message == "Задерживаюсь" or reseived_message == "Задержусь":
    					if random.choice(t) == '1':
    						write_messages (sender, random.choice(opozd))
    					else:
    						write_messages_stick (sender, random.choice(stickers))
    				elif reseived_message == "Бот анекдот" or reseived_message == "Бот, анекдот" or reseived_message == "Бот анек" or reseived_message == "Бот, анек":
    					write_messages(sender, random.choice(anek))
    				elif reseived_message == "Бот, инфо" or reseived_message == "Бот инфо" or reseived_message == "Бот, информация" or reseived_message == "Бот информация" or reseived_message == "Бот инфа" or reseived_message == "Бот, инфа" or reseived_message == "Бот, команды" or reseived_message == "Бот команды" or reseived_message == "Бот команда" or reseived_message == "Бот, команда":
    					write_messages(sender, "📅Команды\nРасписание - показать расписание\nНазвание предмета - показать инфо о предмете\nРубежный контроль - информация о рубежке\nБот проверка - узнать включён ли бот\n!Рассылка - массовая рассылка(только для админов)")
    				elif reseived_message == "Рубежный контроль" or reseived_message == "Рк" or reseived_message == "РК" or reseived_message == "Рубежка":
    					write_messages(sender, "Рано ещё для рубежки.\nПрошлый рубежный контроль закончился 29.04.2021")
    				elif reseived_message == "Бот проверка" or reseived_message == "Бот, проверка":
    					write_messages(sender, "✅Я работаю")
    				elif "Бот насколько процентов" in reseived_message or "Бот на сколько процентов" in reseived_message or "Бот, насколько процентов" in reseived_message or "Бот, на сколько процентов" in reseived_message:
    					write_messages(sender, ("На" + " " + str(random.randint(0,200)) + "%"))
    				elif "Бот сколько процентов" in reseived_message or "Бот, сколько процентов" in reseived_message:
    					write_messages(sender, (str(random.randint(0,200)) + "%"))
    				elif "!Рассылка" in reseived_message:
    					for id in users:
    						user_id=id
    						if id == мой id:
    							try:
    								write_messages_us(id, (re.sub(r'!Рассылка', " ", reseived_message)))
    							except Exception as ex:
    								print("Ошибка")
    						else:
    							write_messages(sender, "У вас нет прав")
    	except requests.exceptions.Timeout:
    		print("Timeout occurred")
    
    print(all_data)

    Это находится в другом файле
    users = [мой id, id второго пользователя]
    Вот полный код.
    Если запускаю этот код, то когда пишу !Рассылка "текст", то он делает рассылку в лс людям и пишет в саму беседу "У вас нет прав", причём рассылку может сделать кто угодно, хотя тут прописан только мой id if id == мой id:
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007, Я заметил, что если я поставлю
    for id in users:
                user_id=id

    в начале всего кода, то он абсолютно на любое сообщение отвечает 2 раза и иногда ВК обрывает соединение
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Почему 2 раза? не понимаю.
    users = [id пользователя, id второго пользователя]
    for id in users:

    Это же делается чтобы проверить id пользователя в списке
  • Почему ВК бот отвечает 2 раза?

    @IlyaAkt Автор вопроса
    Alexa2007,
    def write_messages(sender, message):
    			authorize.method('messages.send', {'chat_id': sender, 'message': message, 'random_id': get_random_id(), 'attachment': ','.join(attachments)})
    		def write_messages_us(sender, message):
    			authorize.method('messages.send', {'peer_id': user_id, 'message': message, 'random_id': get_random_id(), 'attachment': ','.join(attachments)})