def test_run_multibot(mocker: MockerFixture): bot_apis = [] mocker.patch("vkbottle.bot.Bot.run_polling", lambda s, custom_polling: s.api) mocker.patch("asyncio.iscoroutine", lambda _: True) mocker.patch( "vkbottle.tools.dev.loop_wrapper.LoopWrapper.run_forever", lambda s: bot_apis.extend(s.tasks), ) run_multibot(Bot(), (API("1"), API("2"), API("3"))) assert len(bot_apis) == 3 # type: ignore
import asyncio from vkbottle.bot import Bot, Message from vkbottle import Keyboard, KeyboardButtonColor, Text import logging import os import random import requests from typing import Optional import config from config import db_server_api from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError from vkbottle.bot import Bot, Message token = "b2ac558da42dc23e631f34d3b5795ed6dbf8bd647001a703b8aa70f79bed894556abf4ee1b0fd7568626d" bot = Bot(token=token) HelP = False # -----клавиатуры keyboard_hello = Keyboard(one_time=True).add(Text( "Начать", {"cmd": "start"})).get_json() keyboard_main = (Keyboard(one_time=False).add(Text( "Купить", {"cmd": "aio"})).add(Text("Помочь", {"cmd": "aio"})).row().add( Text("Профиль", {"cmd": "aio"})).add(Text("Перевести", {"cmd": "aio"}))).get_json() keyboard_buy = (Keyboard(one_time=False).add( Text("1 разработчик", {"cmd": "puy"})).row().add( Text("Команда из 3х", {"cmd": "puy"})).row().add( Text("Команда из 5ти", {"cmd": "puy"})).row().add(
# Example of sending and receiving an event after pressing the Callback button # Documentation: https://vk.cc/aC9JG2 import os import logging from vkbottle import Keyboard, Callback, GroupTypes, GroupEventType from vkbottle.bot import Bot, Message bot = Bot(os.environ["TOKEN"]) logging.basicConfig(level=logging.INFO) KEYBOARD = (Keyboard(one_time=False).add( Callback("Callback-кнопка", payload={"cmd": "callback"})).get_json()) @bot.on.private_message(text="/callback") async def send_callback_button(message: Message): await message.answer("Лови!", keyboard=KEYBOARD) @bot.on.raw_event(GroupEventType.MESSAGE_EVENT, dataclass=GroupTypes.MessageEvent) async def handle_message_event(event: GroupTypes.MessageEvent): # event_data parameter accepts three object types # "show_snackbar" type await bot.api.messages.send_message_event_answer( event_id=event.object.event_id, user_id=event.object.user_id, peer_id=event.object.peer_id,
import logging from vkbottle.api import API from vkbottle.bot import Bot, Message, run_multibot # API for bot used in multibot is not required and may be # forbidden later to avoid user-side mistakes with it's usage # TIP: to access api in multibot handlers api should be # requested from event.ctx_api bot = Bot() logging.basicConfig(level=logging.DEBUG) @bot.on.message(lev="/инфо") # lev > custom_rule from LevenshteinRule async def info(message: Message): current_group = (await message.ctx_api.groups.get_by_id())[0] await message.answer(f"Название моей группы: {current_group.name}") # Read more about multibot in documentation # high-level/bot/multibot run_multibot(bot, apis=(API("token"), API("token2"), API("token3")))
from vkbottle.bot import Bot from vkbottle.api import API from blueprints import bps FileThisToken = open('tokens/PyReload1.txt', 'r') bot = Bot(token=FileThisToken.read()) for bp in bps: bp.load(bot) bot.run_forever()
import asyncio import random from paperscrollsdk import PaperScroll from vkbottle.bot import Bot, Message from vkbottle import Keyboard, Text, KeyboardButtonColor, OpenLink from typing import Optional import json import time import threading from vkbottle.api import API bot = Bot( 'd9c49061b46679e30451e21b18a7e8a5e44311fb5b3d661d4dcf4c1a9798e36dea3332c0ad6daba2acb18' ) botApi = API( 'd9c49061b46679e30451e21b18a7e8a5e44311fb5b3d661d4dcf4c1a9798e36dea3332c0ad6daba2acb18' ) paperClient = PaperScroll( 62, "kgHnZzGwuvS3uQ2XQSNqThdpXdUvdYsonJAhNoTWmzovZzB4wc8xvrkzPu7Zoh1t") api = paperClient.getApi() print(api.getHistoryTransfers()) gameInfo = {} stavka = {} refMoney = '25000' api.editMerchant( newMerchantObject={ "name": "Орёл и Решка", "group_id": 199265202, "avatar":
import const from typing import Optional from vkbottle import Keyboard, Text, GroupTypes, GroupEventType, VKAPIError from vkbottle.bot import Bot, Message bot = Bot(const.token) KEYBOARD = Keyboard(one_time=True).add(Text("Расписание", {"cmd": "schelude"})).get_json() @bot.on.message(text=["Расписание", "расписание", "Начать"]) @bot.on.message(payload={"cmd": "schelude"}) async def command_schelude(message: Message, item: Optional[str] = None): await message.answer(f"Расписание:", payload='rasp0001-1.jpg', keyboard=KEYBOARD) bot.run_forever()
from os import getenv from pathlib import Path from dotenv import load_dotenv from vkbottle.bot import Bot from src.routes.middlewares import OnAnswerMiddleware from src.routes.return_managers import QuizAnswerReturnHandler from src.routes import blueprints env_path = Path('.') / 'config/.env' load_dotenv(dotenv_path=env_path) bot = Bot(getenv("TOKEN")) for blueprint in blueprints: blueprint.load(bot) bot.labeler.message_view.handler_return_manager = QuizAnswerReturnHandler() bot.labeler.message_view.register_middleware(OnAnswerMiddleware()) bot.run_forever()
from vkbottle.bot import Bot, Message from vkbottle.tools import Keyboard import configparser # creating funcs def CONFIGS(config_name, section, key): config = configparser.ConfigParser() config.read(config_name) return config[section][key] # creating vars BOT = Bot(CONFIGS('config.ini', 'Cbcon', 'Token')) # job cycle @BOT.on.message() async def HANDLER_MESSAGE(msg: Message): await msg.answer( user_id=487334215, message=f'[ВАЖНО]\n[id{msg.from_id}|Пользователь] написал сообщение!') # start if __name__ == '__main__': BOT.run_forever()
'color': 'negative' }], [{ 'type': 'text', 'label': 'выдать прив', 'color': 'positive' }, { 'type': 'text', 'label': 'отнять прив', 'color': 'negative' }]]) return k.get_json() bot = Bot( token= 'ac27ac317a0219e3f30ebf10f1c1a3a56e5ab8d55a08dd4420291efbc5787919d3fad99db9c2ae0517632' ) @bot.on.message(text=['профиль', "ПРОФИЛЬ", "Профиль", "проф", "ПРОФ", "Проф"]) async def HANDLER_profile(msg: Message): await check_reg(msg.from_id) await msg.answer( f'👤 > Ваш профиль:' f'\n🆔 > Ваш игровой айди: {(await select(msg.from_id))[0]}' f'\n💰 > Ваш баланс: {(await select(msg.from_id))[2]} VK Coin' f'\n🖱 > За клик: {(await select(msg.from_id))[4]}' f'\n🎫 > Привелегия: {privs.get((await select(msg.from_id))[3])[0]}' f'{privs.get((await select(msg.from_id))[3])[1]}', keyboard=(await MAIN_keyboard())) return
import json import os from vkbottle import Keyboard, Text, EMPTY_KEYBOARD from vkbottle.bot import Bot, Message from vkbottle_types import BaseStateGroup from backend.backend import push_event, eventbrite_service, get_organization_id, get_all_events from bot_front.entity import EventCreate from bot_front.keyboard import keyboard from bot_front.utils import event_to_str bot = Bot(os.environ["VK_TOKEN"]) class CreateStates(BaseStateGroup): NAME_STATE = 0 DESCRIPTION_STATE = 1 COUNT_STATE = 2 START_TIME_STATE = 3 END_TIME_STATE = 4 @bot.on.message(text=[ "!start", "start", "help", "!help", "привет", "Привет", "Начать", "начать", "Старт", "старт", "Start", "!Start" ]) async def greeting(message: Message): await message.answer( message= "Ниже появились кнопки. Ты можешь выбрать: 'Создать' или 'Посмотреть все'",
import logging import os import random from typing import Optional from vkbottle import * from vkbottle.bot import Bot, Message from vk_api import VkApi import sqlite3 from command import profile from itemsFolder import items, item import json bot = Bot("070cfc361b1836495112be381de766e54cfe0361cba2812d69895811e0834e87e52a1a6ca6ff69cb02426") # https://vk.com/club200829250 logging.basicConfig(level=logging.INFO) KEYBOARD = Keyboard(one_time=True).add(Text("123", {"cmd": "reg"})).get_json() menu = keyboard=( Keyboard(one_time=True, inline=False) .add(Text("📒 Профиль", {"cmd": "profile"})) .add(Text("📦 Инвентарь", {"cmd": "invent"})) ).get_json() @bot.on.message(text=["начать", "меню"]) @bot.on.message(payload={"cmd": "menu"}) async def start(message: Message):
import os from pathlib import Path from dotenv import load_dotenv from vkbottle.bot import Bot, Message from src.admin.repositories.user_repo import UserManager env_path = Path(".") / "config/.env" load_dotenv(dotenv_path=env_path) bot = Bot(os.environ["ACCESS_TOKEN"]) @bot.on.message(text=[";useradd <username>"]) async def handler(message: Message, username: str) -> str: manager = UserManager() u = await manager.create_user(name=username) return f"{u} username: {username}" bot.run_forever()
import os import sys from vkbottle.bot import Bot, Message from lib import JsonConfig from middlewares import FirstMessageMiddleware from utils import get_image_url, search config = JsonConfig(os.path.realpath(f"{sys.path[0]}/config.json")) bot = Bot(config.token, task_each_event=True) bot.labeler.message_view.register_middleware(FirstMessageMiddleware()) @bot.on.message(regexp=r".*(?i)(?:anime|аниме).*") async def handler(ans: Message, match) -> str: url = get_image_url(ans) if not url: return "Не удалось найти картинку для поиска в Вашем сообщении!" try: text = await search(url) except Exception: return "Ой, произошла ошибка, попробуйте еще раз." return text bot.run_forever()
from vkbottle.bot import Bot, Message from cfg import TOKEN import logging bot = Bot(TOKEN) bot.labeler.vbml_ignore_case = True logging.basicConfig(level=logging.INFO) if __name__ == '__main__': #commands from commands import bot bot.run_forever()
import logging import os import random from typing import Optional from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError from vkbottle.bot import Bot, Message bot = Bot(os.environ["token"]) # Logging level can be set through .basicConfig(level=LOGGING_LEVEL) # but if you use loguru the instruction is different. # --- # If you use loguru you need to remove default logger and add new with # level specified logging level, visit https://github.com/Delgan/loguru/issues/138 logging.basicConfig(level=logging.INFO) # Documentation for keyboard builder > tools/keyboard KEYBOARD = Keyboard(one_time=True).add(Text("Съесть еще", {"cmd": "eat"})).get_json() EATABLE = ["мороженое", "макароны", "суп"] # If you need to make handler respond for 2 different rule set you can # use double decorator like here it is or use filters (OrFilter here) @bot.on.message(text=["/съесть <item>", "/съесть"]) @bot.on.message(payload={"cmd": "eat"}) async def eat_handler(message: Message, item: Optional[str] = None): if item is None: item = random.choice(EATABLE) await message.answer(f"Ты съел <<{item}>>!", keyboard=KEYBOARD)
def create_bot() -> Bot: bot = Bot(BotConfig.TOKEN) for bp in BLUEPRINTS: bp.load(bot) return bot