Compare commits

..

No commits in common. "da84ecacdceca7c6cc7347736353dc3ce8430d58" and "71bcd667943e62c88345ca6b1318f794c5391a85" have entirely different histories.

4 changed files with 10 additions and 8 deletions

View File

@ -26,7 +26,7 @@ python bot.py
| Команда | Описание | Формат вывода | | Команда | Описание | Формат вывода |
|---------|----------|---------------| |---------|----------|---------------|
| `!pg` | Погода в Магнитогорске | Температура, ощущается, описание, влажность, ветер, давление | | `!pg` | Погода в Магнитогорске | Температура, ощущается, описание, влажность, ветер, давление |
| `!nw` | Топ-5 статей и топ-5 новостей AI с Habr | Два блока: статьи и новости | | `!news` | Топ-5 статей и топ-5 новостей AI с Habr | Два блока: статьи и новости |
| `!morning` | Погода + топ-5 статей + топ-5 новостей + котик | Embed: котик thumbnail, погода, статьи, новости | | `!morning` | Погода + топ-5 статей + топ-5 новостей + котик | Embed: котик thumbnail, погода, статьи, новости |
| `!cat` | Случайный котик | Embed с изображением | | `!cat` | Случайный котик | Embed с изображением |
| `!msg <текст>` | Повторяет текст | Текст | | `!msg <текст>` | Повторяет текст | Текст |
@ -62,7 +62,7 @@ python bot.py
- Ветер: км/ч → м/с (`/ 3.6`) - Ветер: км/ч → м/с (`/ 3.6`)
- Погодные описания: английский → русский (`translate_weather()`) - Погодные описания: английский → русский (`translate_weather()`)
### RSS-ленты Habr (!nw, !morning) ### RSS-ленты Habr (!news, !morning)
| Тип | URL | | Тип | URL |
|-----|-----| |-----|-----|
| Статьи | `https://habr.com/ru/rss/hubs/artificial_intelligence/articles/top/daily/?fl=ru` | | Статьи | `https://habr.com/ru/rss/hubs/artificial_intelligence/articles/top/daily/?fl=ru` |

2
bot.py
View File

@ -131,7 +131,7 @@ if __name__ == "__main__":
thread.start() thread.start()
try: try:
bot.run(token) bot.run(token, raise_exception=True)
except discord.LoginFailure as e: except discord.LoginFailure as e:
logger.critical(f"Ошибка авторизации бота: {e}", exc_info=True) logger.critical(f"Ошибка авторизации бота: {e}", exc_info=True)
print(f"❌ Токен неверный или бот отключён. Код ошибки: {e}") print(f"❌ Токен неверный или бот отключён. Код ошибки: {e}")

View File

@ -4,10 +4,10 @@ from utils.news import fetch_rss, format_articles, RSS_URL_ARTICLES, RSS_URL_POS
class News(commands.Cog): class News(commands.Cog):
"""Команда !nw — свежие статьи по AI с Habr""" """Команда !news — свежие статьи по AI с Habr"""
@commands.command(name="nw") @commands.command(name="news")
async def nw(self, ctx): async def news(self, ctx):
"""Топ-5 свежих статей и новостей по AI с Habr""" """Топ-5 свежих статей и новостей по AI с Habr"""
articles = await fetch_rss(RSS_URL_ARTICLES) articles = await fetch_rss(RSS_URL_ARTICLES)
if articles is None: if articles is None:

View File

@ -35,8 +35,10 @@ class TestBotErrorHandlingCodeExists:
with open(ROOT_DIR / "bot.py", encoding="utf-8") as f: with open(ROOT_DIR / "bot.py", encoding="utf-8") as f:
content = f.read() content = f.read()
# Проверяем обработку ошибок в bot.run() # Проверяем наличие raise_exception=True
assert "bot.run(token)" in content, "В bot.py должен быть вызов bot.run(token)" assert "raise_exception=True" in content, (
"В bot.py должен присутствовать параметр raise_exception=True"
)
# Проверяем наличие обработки LoginFailure # Проверяем наличие обработки LoginFailure
assert "LoginFailure" in content, "В bot.py должна быть обработка LoginFailure" assert "LoginFailure" in content, "В bot.py должна быть обработка LoginFailure"