 |

13.06.2023, 20:52
|
|
Участник форума
Регистрация: 20.06.2022
Сообщений: 188
С нами:
2053174
Репутация:
33
|
|
В общем-то зарегестрировал допустим несколько команд и перебираю на какой что отвечать боту с помощью оператора match, case, пример:
Python:
Код:
match message
.
text
:
case
'start'
:
await
message
.
answer
(
'Приветики'
)
case
'id'
# действия, но здесь оно получается примет только /id, а /id 31232 нет
а в одном нужно вводить аргумент, например /id 123, по сути здесь наверное и нужны регулярки но я вообще не врубаюсь как их сюда подключить
|
|
|

13.06.2023, 21:20
|
|
Участник форума
Регистрация: 21.05.2020
Сообщений: 228
С нами:
3148192
Репутация:
98
|
|
Сообщение от shawtyglock.
В общем-то зарегестрировал допустим несколько команд и перебираю на какой что отвечать боту с помощью оператора match, case, пример:
Python:
Код:
match message
.
text
:
case
'start'
:
await
message
.
answer
(
'Приветики'
)
case
'id'
# действия, но здесь оно получается примет только /id, а /id 31232 нет
а в одном нужно вводить аргумент, например /id 123, по сути здесь наверное и нужны регулярки но я вообще не врубаюсь как их сюда подключить
import re
match message.text:
case 'start':
await message.answer('Приветики')
case re.match(r'^id \d+$', message.text):
argument = message.text.split()[1] # Извлекаем аргумент после "id"
await message.answer(f'Вы ввели аргумент: {argument}')
case _:
await message.answer('Неизвестная команда')
|
|
|

13.06.2023, 21:51
|
|
Участник форума
Регистрация: 20.06.2022
Сообщений: 188
С нами:
2053174
Репутация:
33
|
|
Сообщение от ValeriyArtemenko
import re
match message.text:
case 'start':
await message.answer('Приветики')
case re.match(r'^id \d+$', message.text):
argument = message.text.split()[1] # Извлекаем аргумент после "id"
await message.answer(f'Вы ввели аргумент: {argument}')
case _:
await message.answer('Неизвестная команда')
выводит этo:

|
|
|

13.06.2023, 22:11
|
|
Познавший АНТИЧАТ
Регистрация: 14.06.2021
Сообщений: 1,354
С нами:
2587494
Репутация:
88
|
|
Мне кажется это овер мозгоеб, почему не юзать дефолт способ?
И в аиограме вроде как существует message.text.arguments(не помню как, но в документации найдешь)
|
|
|

13.06.2023, 22:27
|
|
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами:
5046982
Репутация:
183
|
|
Python:
Код:
import
re
text
=
'/id 1'
commandData
=
re
.
search
(
'^/(\w+)(\s+(.+))?$'
,
text
)
if
commandData
:
command
,
arg
=
commandData
.
group
(
0
,
2
)
match command
:
case
'start'
:
print
(
'питон говно'
)
case
'id'
:
print
(
f'Питон говно, кста ты ввел{arg}'
if
arg
else
'Слышь, кретин, тебе же сказали ввести число после команды. Ну почему я работаю с идиотами...'
)
|
|
|

13.06.2023, 22:33
|
|
Новичок
Регистрация: 16.07.2013
Сообщений: 2
С нами:
6749526
Репутация:
53
|
|
Сообщение от shawtyglock.
В общем-то зарегестрировал допустим несколько команд и перебираю на какой что отвечать боту с помощью оператора match, case, пример:
Python:
Код:
match message
.
text
:
case
'start'
:
await
message
.
answer
(
'Приветики'
)
case
'id'
# действия, но здесь оно получается примет только /id, а /id 31232 нет
а в одном нужно вводить аргумент, например /id 123, по сути здесь наверное и нужны регулярки но я вообще не врубаюсь как их сюда подключить
1:
Код:
import
re
message_text
=
message
.
text
if
re
.
match
(
r'^/start$'
,
message_text
)
:
await
message
.
answer
(
'Приветики'
)
elif
re
.
match
(
r'^/id(?:\s+\d+)?$'
,
message_text
)
:
id_number
=
re
.
search
(
r'\d+'
,
message_text
)
if
id_number
:
id_number
=
int
(
id_number
.
group
(
)
)
# здесь выполняйте действия с id_number
else
:
# здесь выполняйте действия, если нет аргумента после /id
else
:
# здесь обрабатывайте сообщения, которые не соответствуют ни одному из регулярных выражений
|
|
|

14.06.2023, 13:27
|
|
Новичок
Регистрация: 23.11.2019
Сообщений: 14
С нами:
3407463
Репутация:
53
|
|
|
|
|

14.06.2023, 13:36
|
|
Новичок
Регистрация: 07.06.2023
Сообщений: 0
С нами:
1546818
Репутация:
0
|
|
Можно без использования regex:
1:
Код:
message
=
message
.
text
.
split
(
' '
)
# split по пробелу
match message
:
case
[
'start'
]
:
await
message
.
answer
(
'Приветики'
)
case
'id'
,
id_number
if
id_number
.
isdigit
(
)
:
# code
.
.
.
|
|
|

21.06.2023, 21:23
|
|
Познающий
Регистрация: 24.04.2013
Сообщений: 72
С нами:
6869402
Репутация:
63
|
|
Не надо так делать
Каждая команда - свой хендлер
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|