Задать вопрос
@Elufis

Как отправить сообщение конкртеному пользователю через бота?

Я пишу тг бота для записи в барбершоп. Когда бот записал все данные, он должен отправить их конкртеному пользователю(Никите, см. в последнем роутере), а он не хочет отправлять "Bot.send_message() missing 1 required positional argument: 'self'" ругается на строчку
await bt.send_message(chat_id=1662615318,text=f'Это приходит Никите:\n{data["name"]}\n{data["number"]}\n{data["strigka"]}\n{data["time"]}' )

я не могу никак понять что писать в аргумент self
Помогите решить пожалуйста, заранее спасибо)

from aiogram import F, Router
from aiogram import Dispatcher

from aiogram import types
from aiogram.utils.keyboard import ReplyKeyboardBuilder

from aiogram.fsm.state import StatesGroup, State
from aiogram.fsm.context import FSMContext
from bot import Bot as bt


router = Router()
dp = Dispatcher()
class Reg(StatesGroup):
    name = State()
    number = State()
    strigka = State()
    time = State()
    yes = State()

#до этого есть инлайн кнопка с коллбэк датой "next"
@router.callback_query(F.data == 'next')
async def one(callback: types.CallbackQuery, state: FSMContext):
    await state.set_state(Reg.name)
    await callback.message.answer('Как мне тебя называть?')
@router.message(Reg.name)
async def reg_name(message: types.Message, state: FSMContext):
    await state.update_data(name=message.text)
    await state.set_state(Reg.number)
    await message.answer('Напишите Ваш номер телефона')
@router.message(Reg.number)
async def reg_number(message:types.Message, state: FSMContext):
    await state.update_data(number=message.text)
    await state.set_state(Reg.strigka)
    await message.answer('Напишите стрижку')
@router.message(Reg.strigka)
async def reg_strigka(message:types.Message, state: FSMContext):

    await state.update_data(strigka=message.text)
    await state.set_state(Reg.time)
    await message.answer("Напишите удобное время")


@router.message(Reg.time)
async def reg_time(message:types.Message, state: FSMContext):
    await state.update_data(time=message.text)
    await state.set_state(Reg.yes)
    data = await state.get_data()
    builder = ReplyKeyboardBuilder()
    builder.add(types.KeyboardButton(
        text='Да'

    ))
    builder.add(types.KeyboardButton(
        text='Нет'

    ))
    await message.answer(f'{data["name"]}\n{data["number"]}\n{data["strigka"]}\n{data["time"]}', reply_markup=builder.as_markup())
@router.message(F.text == 'Да')
async def send_message(message: types.Message, state: FSMContext):
    data = await state.get_data()
    await bt.send_message(chat_id=1662615318,text=f'Это приходит Никите:\n{data["name"]}\n{data["number"]}\n{data["strigka"]}\n{data["time"]}' )
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Плохо писать бот на питоне, когда не знаешь питон?
self - это общепринятое название первой переменной в методах класса. Именно в ней передаётся экземпляр класса при вызове метода.
Вы пытаетесь вызвать метод класса как независимую функцию, поэтому возникает ошибка. Необходимо сначала создать экземпляр класса, а потом уже вызывать функцию для этого экземпляра.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы