python — Как сделать, чтобы чат бот ВК на питоне отвечал каждому пользователю по отдельности?
Вопрос задан
Изменён 3 месяца назад
Просмотрен 107 раз
Пишу простого чат бота для квиза на питоне. Проблема заключается в том, что если люди пишут ему в разное время, то все хорошо работает и он им отвечает каждому по отдельности. А когда люди пишут ему одновременно, то он работает сразу на всех и мешает их сообщения и свои ответы. Например: Один пользователь один отвечает на вопрос, а бот засчитывает это за ответ и другого пользователя, поэтому сбивается вся программа. Подскажите, пожалуйста, как это исправить.
for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW: if event.to_me: msg = event.text.lower() id = event.user_id if msg == 'хочу проверить свои знания': for i in id_list: if i == id: i = 1 break if i == 1: sender(id, 'Вы уже вытянули свой билет') else: sender(id, answer, old_keyboard) if msg == 'тянуть билет': ticket_num = random.randint(1,max_value) ticket_txt = tickets.tickets[ticket_num]['questions']['first'] id_list.append(id) sender(id, ticket_txt) questions_got = 1 if questions_got == 1 and msg != 'тянуть билет': if msg == tickets.tickets[ticket_num]['answers']['first'].lower(): ticket_txt = 'Правильно! Следующий вопрос: ' + tickets.tickets[ticket_num]['questions']['second'] sender(id, ticket_txt) questions_got = 2 right_answers += 1 else: ticket_txt = 'К сожалению, вы ошиблись. \n Правильный ответ: ' + tickets.tickets[ticket_num]['answers']['first'] + '\nСледующий вопрос:\n ' + tickets.
tickets[ticket_num]['questions']['second'] sender(id, ticket_txt) questions_got = 2 elif questions_got == 2 and msg != 'тянуть билет': if msg == tickets.tickets[ticket_num]['answers']['second'].lower(): ticket_txt = 'Правильно! Следующий вопрос: ' + tickets.tickets[ticket_num]['questions']['third'] sender(id, ticket_txt) questions_got = 3 right_answers += 1 else: ticket_txt = 'К сожалению, вы ошиблись. \n Правильный ответ: ' + tickets.tickets[ticket_num]['answers']['second'] + '\nСледующий вопрос:\n ' + tickets.tickets[ticket_num]['questions']['third'] sender(id, ticket_txt) questions_got = 3 elif questions_got == 3 and msg != 'тянуть билет': if msg == tickets.tickets[ticket_num]['answers']['third'].lower(): right_answers += 1 ticket_txt = 'Правильно!\n' + 'Вы ответили правильно на ' + str(right_answers) + ' вопросов.' sender(id, ticket_txt) else: ticket_txt = 'К сожалению, вы ошиблись. \n Правильный ответ: ' + tickets.tickets[ticket_num]['answers']['second'] + '\nВы ответили правильно на ' + str(right_answers) + ' вопросов.' sender(id, ticket_txt)
- python
- vkontakte-api
- бот
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Гайд — VK Бот на Python 2 часть — Keyboard / Динамичное меню | BLASTHACK
да я все же выжил.
Всем привет. Уже писал тему с ботом для вк, там мы использовали модуль vk_api(честно сказать не очень для постоянной основы).
Сегодня немного познакомлю вас с таким модулем как vkbottle, ко всем строкам в коде буду оставлять комментарии, так что не бойтесь.
НАДА:
1. Python(Желательно 3.9) — python.org
2. Любой кодовый редактор(НЕ БЛОКНОТ!) — Notepad ++, Atom, VSC, IDLE Python, PyCharm, я использую Sublime Text и вам советую.
3. Сама библиотека vkbottle — Установка: pip install vkbottle
4. Так же библиотека asyncio — pip install asyncio
Так же:
pip install requests
ВНИМАНИЕ! В данном гайде я не буду рассказывать как создать python-файл и как запустить его, так как если вы не знаете этого, данная тема будет вам довольно сложна и не понятно, советую вам начать с vk_api если так надо.
Начнём с настройки сообщества, перед этим создаем его, создаем API ключ, ставим галочки на нужные евенты, так же и с LongPoll, затем ставим самую последнию версию Long Poll Api(Советую 5.
Затем, заходим в «Сообщения» включаем их, так же включаем возможности ботов, по желанию можно включить кнопку «Начать» и указать приветствие.
Теперь копируем наш созданный API ключ, так же нам нужно ID сообщества(цифры после public….) если у вас паблик уже с аудиторией, вы можете узнать ID своего паблика тут -regvk.com
Теперь наконец-то, мы можем перейти к коду =)
Для начала импортируем нужные нам библиотеки и библиотеки которые мы установили.
Затем создадим переменные в которые поместим и передадим нужные нам данные, в нашем случае это токен и id нашей группы.
Так же, дабы не ходить во круг и около, создадим первую функцию ответа на сообщение!
# - НАДА - import asyncio import requests import random # - Вк - from typing import Optional from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError from vkbottle.bot import Bot, Message from vkbottle import Keyboard, KeyboardButtonColor, Text, OpenLink from vkbottle.tools import DocMessagesUploader # Переменные group_id = '206644831' secret = 'ВАШ ТОКЕН' # Для удобства bot_token = secret bot_group_id = group_id vk = Bot(bot_token, bot_group_id) # Приветствие # Есть 3 типа - private_message - ожидание\ответ только в личные сообщения группы! # chat_message - ожидание\ответ только в беседе! # message - ожидание\ответ и в беседе и в личные сообщения! @vk.on.private_message(text=['Начать', 'Ку', 'Привет']) # Сама функция: async def privet(message: Message): # Ответ на сообщение await message.answer('Приветик!') # Толик видиорегистратор система мене vk.run_forever()
Теперь сразу разберем вопрос с вложениями видео/фото/файлы и тд
В методах вк -vk.com/dev, в категории messages, есть метод attachment — отвечающий за прикрепление вложений к сообщению.
Создадим пару функций..
# - НАДА - import asyncio import requests import random # - Вк - from typing import Optional from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError from vkbottle.bot import Bot, Message from vkbottle import Keyboard, KeyboardButtonColor, Text, OpenLink from vkbottle.tools import DocMessagesUploader # Переменные group_id = '206644831' secret = 'ВАШ ТОКЕН' ya = 'doc381260583_611979108' ya2 = 'photo381260583_457378962' ya3 = 'video-200537102_456239073' # Для удобства bot_token = secret bot_group_id = group_id vk = Bot(bot_token, bot_group_id) # Приветствие # Есть 3 типа - private_message - ожидание\ответ только в личные сообщения группы! # chat_message - ожидание\ответ только в беседе! # message - ожидание\ответ и в беседе и в личные сообщения! @vk.on.private_message(text=['Начать', 'Ку', 'Привет']) # Сама функция: async def privet(message: Message): # Ответ на сообщение await message.answer('Приветик!') # Фото @vk.on.private_message(text='фото') async def photo(message: Message): await message.answer('Вот твоя фотка ', attachment=ya2) # Видео @vk.on.private_message(text='видео') async def video(message: Message): await message.answer('Вот твое видео ', attachment=ya3) # Файл @vk.
on.private_message(text='файл') async def file(message: Message): await message.answer('Вот твой файл ', attachment=ya) # Толик видиорегистратор система мене vk.run_forever()
Теперь рассмотрим клавиатуру и напишем простое динамичное меню, так же добавим ответ на сообщение которое мы не знаем =)
# - НАДА - import asyncio import requests import random # - Вк - from typing import Optional from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError from vkbottle.bot import Bot, Message from vkbottle import Keyboard, KeyboardButtonColor, Text, OpenLink from vkbottle.tools import DocMessagesUploader # Переменные group_id = '206644831' secret = 'ВАШ ТОКЕН' ya = 'doc381260583_611979108' ya2 = 'photo381260583_457378962' ya3 = 'video-200537102_456239073' # Для удобства bot_token = secret bot_group_id = group_id vk = Bot(bot_token, bot_group_id) # Приветствие # Есть 3 типа - private_message - ожидание\ответ только в личные сообщения группы! # chat_message - ожидание\ответ только в беседе! # message - ожидание\ответ и в беседе и в личные сообщения! @vk.on.private_message(text=['Начать', 'Ку', 'Привет']) # Сама функция: async def privet(message: Message): # Ответ на сообщение await message.answer('Приветик!') # Фото #@vk.on.private_message(text='фото') #async def photo(message: Message): # await message.answer('Вот твоя фотка ', attachment=ya2) # Видео #@vk.on.private_message(text='видео') #async def video(message: Message): # await message.answer('Вот твое видео ', attachment=ya3) # Файл #@vk.on.private_message(text='файл') #async def file(message: Message): # await message.answer('Вот твой файл ', attachment=ya) # Меню @vk.on.private_message(text=['/mm', 'menu', 'меню']) @vk.on.private_message(payload={'cmd': 'menu'}) async def menu(message: Message): await message.answer( # Сообщение при отправлении клавиатуры message = 'Меню: ', # Клавиатура keyboard = ( # one_time - True - одноразовая клавиатура, False - постоянная клавиатура # inline - True - клавиатура прикрепляется к сообщению(РАССМОТРИМ), False - клавиаутра в стандартном положении # .
add - добавить кнопку # .row - отступ # Цвета: POSITIVE - Ярко зеленый, SECONDARY(можно нечего не указывать) - БЛЕДНО БЕЛЫЙ # PRIMARY - СИНИЙ, NEGATIVE - КРАСНЫЙ Keyboard(one_time = False, inline = False) .add(Text('Инфа'), color=KeyboardButtonColor.POSITIVE) .add(Text('ЛУЧШИЙ ПОРТАЛ'), color=KeyboardButtonColor.NEGATIVE) .row() .add(Text('Магаз'), color=KeyboardButtonColor.PRIMARY) ) ) @vk.on.private_message(text='Магаз') async def magaz(message: Message): await message.answer( message = 'Пятерочка: ', keyboard = ( Keyboard(one_time = False, inline = False) .add(Text('Сигареты'), color=KeyboardButtonColor.POSITIVE) .add(Text('Чипсы'), color=KeyboardButtonColor.POSITIVE) .row() .add(Text('Блейзуха'), color=KeyboardButtonColor.POSITIVE) .add(Text('Круггетсы'), color=KeyboardButtonColor.NEGATIVE) . row() .add(Text('Назад', payload={'cmd': 'menu'})) ) ) # <3 @vk.on.private_message(text='ЛУЧШИЙ ПОРТАЛ') async def blasthk(message: Message): await message.answer( message = 'ЛУЧШИЙ СУКА САЙТ:', keyboard = ( Keyboard(inline = True) .add(OpenLink('https://blast.hk/', 'ЛУЧШИЙ ПОРТАЛ')) ) ) # нада сделать @vk.on.private_message() async def main(message): await message.answer('Я не знаю, что ответить на это =(\n\nВозможно потом когда нибудь я смогу ответить тебе на это =)') # Толик видиорегистратор система мене vk.run_forever()
Вроде бы все, прикреплю исходный файл к теме, так же видео дабы показать как это все работает =)
Если у вас есть срочные вопросы можете задавать их напрямую ввк(кликабельно), а так пишите в данной теме.
Думаю, основное я вам донёс 🙂
Видео:
p. s я импортировал модуль Random, хотел сделать отправку рандомных ответов, думаю кто знает python тот сам знает как это сделать.
Как боты зарабатывают на форекс, когда есть другие боты?
Торговля на рынке Форекс является одним из самых прибыльных видов бизнеса в мире, ежедневно совершая сделки на миллионы долларов. С появлением технологий торговля на форексе стала более доступной для более широкой аудитории, а одним из самых популярных инструментов, используемых трейдерами, являются боты. Боты — это компьютерные программы, предназначенные для автоматического совершения сделок на основе заранее заданных параметров. Но с таким количеством ботов на рынке, как они зарабатывают деньги?
Во-первых, важно отметить, что не все боты одинаковы. Некоторые боты предназначены для работы в конкретных рыночных условиях, а другие — более общего характера. Боты, которые зарабатывают на форекс, умеют адаптироваться к изменяющимся рыночным условиям.
Боты зарабатывают деньги, торгуя на новостях. Новостные события могут вызывать значительные колебания цен на рынке, и боты способны быстро реагировать на эти события и заключать сделки. Например, если для определенной страны опубликован положительный экономический отчет, бот может автоматически покупать валюту этой страны в ожидании повышения ее стоимости.
Еще один способ, которым боты зарабатывают деньги, — торговля на основе технического анализа. Технический анализ — это изучение прошлых рыночных данных, таких как движение цен и объем торгов, для прогнозирования будущих движений рынка. Боты способны быстро и точно анализировать большие объемы данных, что позволяет им выявлять тенденции и закономерности, которые люди могут упустить. Затем боты могут совершать сделки на основе этих моделей, потенциально получая прибыль.
Одним из важных факторов, который следует учитывать при использовании ботов, является стратегия, которую использует бот. Некоторые боты используют стратегию следования за трендом, когда они следуют за рыночным трендом и соответственно совершают сделки. Другие боты используют стратегию возврата к среднему, когда они ищут рыночные условия, которые являются перекупленными или перепроданными, и совершают сделки в противоположном направлении. Стратегия, используемая ботом, может оказать существенное влияние на его прибыльность.
Также важно помнить, что боты могут ошибаться. Боты программируются людьми, и ошибки в программировании могут привести к убыткам. Кроме того, на ботов могут повлиять неожиданные рыночные события, такие как внезапные изменения процентных ставок или политическая нестабильность. Важно иметь меры безопасности, такие как приказы стоп-лосс, чтобы ограничить потенциальные убытки.
В заключение, боты могут зарабатывать деньги на форекс, торгуя на новостях и техническом анализе. Стратегия, используемая ботом, а также программирование и меры безопасности могут оказать значительное влияние на его прибыльность. Важно тщательно продумать использование ботов в торговле на рынке Форекс, а также тщательно изучить и протестировать любого бота, прежде чем использовать его в реальной торговой среде.
Предыдущая статьяКак получить терминальный счет форекс mql4?
Следующая статьяКак найти ссылку на форекс?
Популярные вопросы
Скачать приложение
Скачать приложение FASignalsЕЩЕ БОЛЬШЕ НОВОСТЕЙ
Интерпретатор кода ChatGPT может сделать специалистов по данным устаревшими
9 0033Послушайте эту историю
В марте этого года OpenAI объявила, что будет добавлять плагины к ChatGPT, одновременно намекая на запуск интерпретатора кода и плагина для веб-браузера. На прошлой неделе компания начала выпускать подключаемый модуль интерпретатора кода, который уже вызвал беспокойство у специалистов по обработке и анализу данных.
Плагин заменяет многие стандартные рабочие процессы специалиста по данным, включая визуализацию, анализ тенденций и даже преобразование данных. Если посмотреть на интерпретатор кода в тандеме с другими достижениями в области науки о данных, остается вопрос — устареют ли специалисты по данным?
Исследователь данных на стероидах?Проще говоря, интерпретатор кода — это подключаемый модуль для ChatGPT, который обеспечивает изолированную и защищенную брандмауэром среду выполнения кода Python. Из соображений безопасности интерпретатор работает только во время сеанса чата, а также размещается на временном дисковом пространстве, что означает, что данные очищаются после закрытия чата.
Интерпретатор также поддерживает загрузку определенных файлов в плагин, при этом выходные данные бота доступны для загрузки. В сообщении блога, объявляющем о его запуске, OpenAI сравнил интерпретатор кода с «очень нетерпеливым младшим программистом, работающим со скоростью ваших отпечатков пальцев», далее заявив, что он хорош в решении математических задач, преобразовании файлов между различными форматами и проведении анализа данных. и визуализация. Интерпретатор также имеет доступ к различным библиотекам Python, включая библиотеку OCR и MatPlotLib.
Люди в Интернете поставили перед ChatGPT задачу проанализировать множество наборов данных, от шоу Netflix до данных о преступлениях в Сан-Франциско. В этих приложениях плагин мог определять тенденции, очищать данные и даже генерировать идеи.
В дополнение к этому, чат-бот также мог генерировать визуализацию полученных идей, представляя информацию в удобном для понимания формате. Например, вот визуализация каждого маяка в Соединенных Штатах, созданная из простого CSV-файла с расположением маяков.
Это было восхитительно: я загрузил файл CSV со всеми местоположениями маяков в США.
«Интерпретатор кода ChatGPT: создайте GIF-файл карты расположения маяков, где карта очень темная, но каждый маяк мерцает». Пару секунд спустя… pic.twitter.com/f14JLWQCyB
— Итан Моллик (@emollick) 2 мая 2023 г.
Вместо того, чтобы бороться с электронными таблицами и сложным программным обеспечением для визуализации, любой может просто попросить интерпретатор кода дать им желаемый результат. .
Этот набор ролей и обязанностей близко описывает должностную инструкцию среднего специалиста по данным, за исключением того, что ChatGPT делает это намного быстрее. Итак, каково ценностное предложение для специалиста по данным? Для многих это может быть просто доверие к данным.
В конце концов, не человекОбязанности специалистов по данным выходят за рамки обработки данных и их визуализации. Эксперт по данным признает важность рассказывания историй с помощью данных и ценность поиска скрытых самородков идей через человеческое прикосновение. Хотя интерпретатор кода ChatGPT не способен на это, из-за отсутствия логического мышления у плагина есть еще один набор проблем: галлюцинации.
Хотя бот может выполнять некоторые роли специалиста по данным, он по-прежнему основан на LLM, склонном к галлюцинациям. Пользователи Hacker News рассказали о некоторых визуализациях, созданных чат-ботом.
«Современные ИИ чат-ботов обладают впечатляющими возможностями, но также склонны ошибаться в важных деталях. В графических симуляциях также есть много «очевидных» сбоев, но они меня меньше беспокоят — именно потому, что они очевидны».
Кажется, галлюцинации следуют за ChatGPT, куда бы он ни пошел, и интерпретатор кода не исключение. Однако кажется, что эти галлюцинации в значительной степени ограничиваются визуализациями, созданными интерпретатором кода. В дополнение к этому существует также проблема загрязнения данных в наборе данных ChatGPT.
Обычные визуализации, такие как построение графика из CSV, относительно легко выполняются LLM. Вероятно, это связано с тем, что такие проекты хорошо задокументированы по всему Интернету, что повышает вероятность того, что ChatGPT узнает о них. Однако настоящий специалист по данным в большой организации, вероятно, столкнется с проблемами визуализации, которые выходят за рамки простых графиков или картографических схем, с которыми интерпретатор кода не может надежно справиться.