Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
altlinux-packages-bot
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kirill Unitsaev
altlinux-packages-bot
Commits
01722978
Verified
Commit
01722978
authored
Jul 21, 2025
by
Kirill Unitsaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
news module: add news menu
parent
6d1ebf42
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
71 additions
and
18 deletions
+71
-18
__init__.py
src/data/keyboards/__init__.py
+1
-0
news.py
src/data/keyboards/news.py
+16
-0
news.py
src/handlers/news.py
+54
-18
No files found.
src/data/keyboards/__init__.py
View file @
01722978
from
.
import
admin
as
admin_keyboards
from
.
import
admin
as
admin_keyboards
from
.
import
start
as
start_keyboards
from
.
import
start
as
start_keyboards
from
.
import
menu
as
menu_keyboards
from
.
import
menu
as
menu_keyboards
from
.
import
news
as
news_keyboards
from
.
import
profile
as
profile_keyboards
from
.
import
profile
as
profile_keyboards
from
.
import
watch
as
watch_keyboards
from
.
import
watch
as
watch_keyboards
from
.
import
bugs
as
bugs_keyboards
from
.
import
bugs
as
bugs_keyboards
src/data/keyboards/news.py
0 → 100644
View file @
01722978
from
telegrinder
import
InlineKeyboard
,
InlineButton
news_type_kb
=
(
InlineKeyboard
()
.
add
(
InlineButton
(
"Sisyphus"
,
callback_data
=
"news/sisyphus/0"
))
.
add
(
InlineButton
(
"Sisyphus (ru)"
,
callback_data
=
"news/sisyphus/1"
))
.
row
()
.
add
(
InlineButton
(
"p11"
,
callback_data
=
"news/p11/0"
))
.
add
(
InlineButton
(
"p11 (ru)"
,
callback_data
=
"news/p11/1"
))
.
row
()
.
add
(
InlineButton
(
"Bugs"
,
callback_data
=
"news/bugs/0"
))
.
add
(
InlineButton
(
"FTBFS"
,
callback_data
=
"news/ftbfs/0"
))
.
row
()
)
.
get_markup
()
src/handlers/news.py
View file @
01722978
from
telegrinder
import
Dispatch
,
Message
from
telegrinder
import
Dispatch
,
Message
,
CallbackQuery
from
telegrinder.rules
import
Command
,
Argument
from
telegrinder.rules
import
Command
,
Argument
,
CallbackDataMarkup
,
Text
,
IsPrivate
from
altrepo
import
altrepo
from
altrepo
import
altrepo
from
services.news
import
format_packages
,
format_bugs
from
services.news
import
format_packages
,
format_bugs
from
data.keyboards
import
news_keyboards
dp
=
Dispatch
()
dp
=
Dispatch
()
@dp.message
(
Command
(
"news"
,
Argument
(
"news_type"
,
optional
=
True
),
Argument
(
"translate"
,
optional
=
True
)))
async
def
news_handler
(
m
:
Message
,
news_type
:
str
|
None
,
translate
:
str
|
None
)
->
None
:
@dp.message
(
Text
([
"новости"
,
"news"
],
ignore_case
=
True
),
IsPrivate
())
news_type
=
news_type
or
"sisyphus"
@dp.message
(
Command
(
"news"
,
Argument
(
"news_type"
,
optional
=
True
),
Argument
(
"translate"
,
optional
=
True
),
)
)
@dp.callback_query
(
CallbackDataMarkup
(
"news/<news_type>/<translate:int>"
))
async
def
news_handler
(
m
:
Message
|
CallbackQuery
,
news_type
:
str
|
None
=
None
,
translate
:
int
|
None
=
None
,
)
->
None
:
if
not
news_type
:
text
=
(
"Выберите тип новостей.
\n\n
"
"Внимание: Sisyphus (ru) и p11 (ru) могут работать нестабильно."
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
text
,
reply_markup
=
news_keyboards
.
news_type_kb
)
if
news_type
==
"bugs"
:
if
news_type
==
"bugs"
:
bugs_data
=
await
altrepo
.
parser
.
news
.
bugs
()
bugs_data
=
await
altrepo
.
parser
.
news
.
bugs
()
if
not
bugs_data
:
if
not
bugs_data
:
await
m
.
answer
(
"Новостей пока нет."
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
"Новостей пока нет."
)
return
return
bugs
=
await
format_bugs
(
bugs_data
)
bugs
=
await
format_bugs
(
bugs_data
)
await
m
.
answer
(
bugs
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
bugs
)
elif
news_type
==
"ftbfs"
:
elif
news_type
==
"ftbfs"
:
ftbfs_data
=
await
altrepo
.
parser
.
packages
.
ftbfs
()
ftbfs_data
=
await
altrepo
.
parser
.
packages
.
ftbfs
()
if
not
ftbfs_data
:
if
not
ftbfs_data
:
await
m
.
answer
(
"ftbfs нет."
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
"ftbfs нет."
)
return
return
message
=
""
message
=
""
for
package
in
ftbfs_data
:
for
package
in
ftbfs_data
:
message
+=
f
"{package.name} | {package.ftbfs_weeks}
\n
"
message
+=
f
"{package.name} | {package.ftbfs_weeks}
\n
"
await
m
.
answer
(
message
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
message
)
else
:
else
:
if
news_type
==
"sisyphus"
:
if
news_type
==
"sisyphus"
:
packages_data
=
await
altrepo
.
parser
.
news
.
sisyphus
()
packages_data
=
await
altrepo
.
parser
.
news
.
sisyphus
()
...
@@ -34,20 +59,31 @@ async def news_handler(m: Message, news_type: str | None, translate: str | None)
...
@@ -34,20 +59,31 @@ async def news_handler(m: Message, news_type: str | None, translate: str | None)
packages_data
=
await
altrepo
.
parser
.
news
.
p11
()
packages_data
=
await
altrepo
.
parser
.
news
.
p11
()
else
:
else
:
return
return
if
not
packages_data
:
if
not
packages_data
:
await
m
.
answer
(
"Новостей пока нет."
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
"Новостей пока нет."
)
return
return
if
bool
(
translate
):
if
bool
(
translate
):
await
m
.
answer
(
"Начался перевод, это может занять до 10 минут."
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
"Начался перевод, это может занять до 10 минут."
,
)
try
:
try
:
added
,
removed
,
updated
,
info_message
=
await
format_packages
(
packages_data
,
bool
(
translate
))
added
,
removed
,
updated
,
info_message
=
await
format_packages
(
packages_data
,
bool
(
translate
)
)
except
:
except
:
await
m
.
answer
(
"перевод не удался :("
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
"Перевод не удался :("
)
return
return
await
m
.
answer
(
f
"{added}{removed}{info_message}"
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
f
"{added}{removed}{info_message}"
)
for
msg
in
updated
:
for
msg
in
updated
:
await
m
.
answer
(
msg
)
await
m
.
ctx_api
.
send_message
(
chat_id
=
m
.
from_user
.
id
,
text
=
msg
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment