message = 'Такого игрока не существует' user_id = int(data['text'].split()[1]) player = Player.query.filter_by(user_id=user_id).first() if player: jobName = playerAlarmName + str(player.user_id) run_date = player.date.replace(hour=15, minute=0, second=0, microsecond=0) + timedelta(weeks=3) message = 'Для ' + player.name + ' добавлена напоминалка на ' +\ run_date.strftime('%d/%m/%Y, %H:%M:%S') + ' UTC+0' scheduler.add_job( send_blame_message, 'date', run_date=run_date, args=[data['group_id'], player.user_id, 2000000003], id=jobName, jobstore='default' ) return message, '' botAddBlameJob_command = VKC.Command() botAddBlameJob_command.keys = ['Bot.addBlameJob '] botAddBlameJob_command.desription = 'Добавляет для игрока напоминалку о пропуске дедлайна. ' \ 'Принимает id игрока через пробел' botAddBlameJob_command.proccess = botAddBlameJob
import app.vk_commands as VKC from app.vkapi import send_blame_message def botTestBlameMessage(data): message = '...' send_blame_message(data['group_id'], data['from_id'], data['peer_id']) return message, '' botTestBlameMessage_command = VKC.Command() botTestBlameMessage_command.keys = ['Bot.testBlameMessage'] botTestBlameMessage_command.desription = 'Тестируем отправку сообщений' botTestBlameMessage_command.proccess = botTestBlameMessage
import app.vk_commands as VKC from app.vk_commands import command_list def botHelper(data): message = 'Вот какие есть команды:\n' for c in command_list: if c.keys[0].startswith('bot.'): message += c.keys[0].split()[0] + ' - ' + c.desription + '\n\n' return message, '' botHelper_command = VKC.Command() botHelper_command.keys = ['Bot.helper'] botHelper_command.desription = 'Информация о всех системных командах' botHelper_command.proccess = botHelper
def updateDate(data): user_id = data['from_id'] player = Player.query.filter_by(user_id=user_id).first() if not player: message = 'Прости, но тебя нет в списке, напиши команду "Адик, добавь меня, я твой_никнейм" здесь или же через' \ ' личные сообщения, чтобы я мог зарегистрировать тебя. Для доступа к личным сообщениям, надо ' \ 'вступить в мою группу https://vk.com/ApostolusDeiBot и написать мне лично :3.' return message, '' # игрок есть, значит обновляем date = datetime.datetime.today() + datetime.timedelta(hours=3) player.date = date db.session.commit() check_blame_alarm(player, data) message = 'Понято-принято от ' + player.name + '\n\n' + get_list() return message, '' updateDate_command = VKC.Command() updateDate_command.keys = ['+ ад', '+ад', '+ в ад', '+ ролка', '+ в ролку'] updateDate_command.desription = 'Обновляет дату последнего поста игрока' updateDate_command.proccess = updateDate
import app.vk_commands as VKC from app.extensions import db from app.models import BlameMeme def botAddPhotos(data): message = 'Добавлено' # вытаскиваем информацию из сообщения и добавляем str = data['text'].split('\n') length = len(str) for x in range(1, length): p = str[x].split(' ') photo_id = int(p[0]) photo = BlameMeme(photo_id=photo_id) db.session.add(photo) db.session.commit() return message, '' botAddPhotos_command = VKC.Command() botAddPhotos_command.keys = ['Bot.addPhotos\n'] botAddPhotos_command.desription = 'Добавляет картинки для send_blame_message. Каждая картинка пишется с новой строки ' \ 'в следующем формате: photo_id' botAddPhotos_command.proccess = botAddPhotos
import app.vk_commands as VKC def link(data): message = 'Вот ссылочка: http://makebelieve.starbb.ru/viewforum.php?id=28' return message, '' link_command = VKC.Command() link_command.keys = ['Адик, дай ссылку'] link_command.desription = 'Дает ссылку на форум' link_command.proccess = link
from app.models import Player def botAddPlayers(data): message = 'Добавлено' # вытаскиваем информацию из сообщения и добавляем str = data['text'].split('\n') length = len(str) for x in range(1, length): p = str[x].split(' ') user_id = int(p[0]) name = p[1] date = datetime.datetime.strptime(p[2], '%Y-%m-%d/%H:%M:%S') player = Player(user_id=user_id, name=name, date=date) db.session.add(player) db.session.commit() return message, '' botAddPlayers_command = VKC.Command() botAddPlayers_command.keys = ['Bot.addPlayers\n'] botAddPlayers_command.desription = 'Добавляет игроков в таблицу. Каждый игрок пишется с новой строки в следующем ' \ 'формате: user_id имя 1997-10-21/11:00:00' botAddPlayers_command.proccess = botAddPlayers
import app.vk_commands as VKC from app.extensions import scheduler, weeklyJobName from apscheduler.jobstores.base import JobLookupError import sys def stopWeekNotification(data): message = 'Останавливаю недельные оповещения для этой беседы.' try: job_id = weeklyJobName + str(data['peer_id']) scheduler.remove_job(job_id=job_id, jobstore='default') scheduler.print_jobs(jobstore='default') except JobLookupError: print(sys.exc_info()) return message, '' stopWeekNotification_command = VKC.Command() stopWeekNotification_command.keys = ['Адик, останови 7 дней'] stopWeekNotification_command.desription = 'Останавливает недельные оповещения' stopWeekNotification_command.proccess = stopWeekNotification
import app.vk_commands as VKC def hello(data): message = 'Привет!' return message, '' hello_command = VKC.Command() hello_command.keys = ['Привет бот', 'Привет, Бот', 'Привет Адик', 'Адик, привет', 'Адик привет'] hello_command.desription = 'Приветственное сообщение' hello_command.proccess = hello
def botDeletePlayer(data): name = data['text'][17:] player = Player.query.filter_by(name=name).first() if not player: message = 'Такого игрока нет в списке. Возможно он уже был удален' return message, '' # игрок есть, значит удаляем db.session.delete(player) db.session.commit() message = 'Игрок ' + player.name + ' был удален из списка игроков.\n\n' players = Player.query.all() for player in players: message += player.name + " - " + player.date.strftime("%d/%m/%Y") + "\n" return message, '' botDeletePlayer_command = VKC.Command() botDeletePlayer_command.keys = ['Bot.deletePlayer '] botDeletePlayer_command.desription = 'Удаляет игрока по нику. Ник пишется через пробел после команды' botDeletePlayer_command.proccess = botDeletePlayer
import app.vk_commands as VKC import random kaomodzi = ["(๑•́ωก̀๑).。oO", "( •́ωก̀)zzZ", "(´っω=`)", "(っ﹏-) .。o", "(。‐ω⊂。)"] def wakeUp(data): message = random.choice(kaomodzi) return message, '' wakeUp_command = VKC.Command() wakeUp_command.keys = [ 'Адик, подъем!', 'Адик, проснись!', 'Адик, подъем', 'Адик, проснись' ] wakeUp_command.desription = 'Будит Адика' wakeUp_command.proccess = wakeUp
message = 'Запускаю недельные оповещения. Дата оповещения: ' + day + ' в ' + text[ -1] + '.' if hour < 0: hour = 24 + hour dayList = list(daysDict.keys()) day = dayList[dayList.index(day) - 1] minute = int(text[-1].split(':')[1]) job_id = weeklyJobName + str(peer_id) scheduler.add_job(send_list, 'cron', day_of_week=daysDict.get(day), hour=hour, minute=minute, args=[peer_id], id=job_id, jobstore='default') scheduler.print_jobs(jobstore='default') return message, '' startWeekNotification_command = VKC.Command() startWeekNotification_command.keys = ['Адик, запусти 7 дней '] startWeekNotification_command.desription = 'Выводит список игроков каждые семь дней' startWeekNotification_command.proccess = startWeekNotification
import app.vk_commands as VKC from app.vkapi import get_list def list(data): message = get_list() return message, '' list_command = VKC.Command() list_command.keys = ['Адик, покажи список', 'Адик, список'] list_command.desription = 'Выводит список игроков с датами' list_command.proccess = list
if not player: # получаем имя, так как оно последнее и без пробелов name = data['text'].split()[-1] if check_name(name): message = 'Такое имя уже есть в списке.\n\n' return message, '' date = datetime.datetime.today() + datetime.timedelta(hours=3) player = Player(user_id=user_id, name=name, date=date) db.session.add(player) db.session.commit() message = 'Я добавил тебя в таблицу.\n\n' players = Player.query.all() for player in players: message += player.name + " - " + player.date.strftime( "%d/%m/%Y") + "\n" return message, '' addPlayer_command = VKC.Command() addPlayer_command.keys = ['Адик, добавь меня, я '] addPlayer_command.desription = 'Добавляет игрока в таблицу' addPlayer_command.proccess = addPlayer
import app.vk_commands as VKC from app.extensions import scheduler def botAllJobs(data): scheduler.print_jobs(jobstore='default') message = str(scheduler.get_jobs(jobstore='default')) + '\n\nБольше информации смотри в логах:' \ ' https://dashboard.heroku.com/apps/ad-vk-bot/logs' return message, '' botAllJobs_command = VKC.Command() botAllJobs_command.keys = ['Bot.sheduler.all_job'] botAllJobs_command.desription = 'Выводит в логи и в сообщения все оповещения (в логах подробнее)' botAllJobs_command.proccess = botAllJobs