-
Notifications
You must be signed in to change notification settings - Fork 52
Add telegram client #111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add telegram client #111
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job!
Please be sure to pass the flake8 and coverage CI jobs :)
tests/test_telegram.py
Outdated
|
||
page = profile_test_client.post( | ||
'/telegram', data=gen_message('/start')) | ||
assert page.status_code == 307 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Prefer using the name of the status code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Codecov Report
@@ Coverage Diff @@
## develop #111 +/- ##
===========================================
+ Coverage 99.46% 99.55% +0.09%
===========================================
Files 21 26 +5
Lines 742 897 +155
===========================================
+ Hits 738 893 +155
Misses 4 4
Continue to review full report at Codecov.
|
To use PyLander Bot you have to register | ||
your Telegram Id in your profile page. | ||
|
||
Your Id is {chat.user_id} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why a user needs to know his chat id?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As mentioned above, to use a bot you have to register an id in the profile page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I probably missed your prev comment.
Would you please add here a link to it? thanks
tests/test_telegram.py
Outdated
"https://google.com") | ||
|
||
set_request = bot.set_webhook() | ||
assert set_request.status_code == 404 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could use starlette.status for code status
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
tests/test_telegram.py
Outdated
} | ||
|
||
|
||
def test_chat_model(): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider surround tests with a class.
Also, you can add some consts (like "not found", "Unknown command") and use it in the tests.
tests/test_telegram.py
Outdated
|
||
page = profile_test_client.post( | ||
'/telegram', data=gen_message('/start')) | ||
assert page.status_code == status.HTTP_307_TEMPORARY_REDIRECT |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! don't forget to use this class for all statuses :)
return answer | ||
|
||
|
||
async def reply_unknown_user(chat): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you mean by unknown user?
tests/test_profile.py
Outdated
# Post new data | ||
profile = profile_test_client.post( | ||
'/profile/update_telegram_id', data=new_telegram_id) | ||
assert profile.status_code == 302 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please change it to a fastapi.status
const?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job! Added few more comments :)
app/main.py
Outdated
@@ -5,7 +5,8 @@ | |||
from app.database.database import engine | |||
from app.dependencies import ( | |||
MEDIA_PATH, STATIC_PATH, templates) | |||
from app.routers import agenda, event, profile, email, invitation | |||
from app.telegram.pylander import pylander |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe as telegram_bot
, to prevent future name collisions?
app/telegram/handlers.py
Outdated
answer = f"{chosen_date.strftime('%B %d')}, \ | ||
{chosen_date.strftime('%A')} Events:\n" | ||
|
||
if not len(events): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be more Pythonic: if not events
app/telegram/keyboards.py
Outdated
|
||
def get_this_week_buttons() -> List[List[Any]]: | ||
today = datetime.date.today() | ||
day1 = today + datetime.timedelta(days=1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for loop instead?
app/telegram/models.py
Outdated
self.user_id = self._get_user_id(data) | ||
self.first_name = self._get_first_name(data) | ||
|
||
def _get_message_content(self, data): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Type annotation is missing. Also, what is data
? message
?
app/telegram/models.py
Outdated
return requests.get(self.webhook_setter_url) | ||
|
||
def drop_webhook(self): | ||
data = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can be one line
app/telegram/models.py
Outdated
'reply_markup': None} | ||
if reply_markup: | ||
message.update(reply_markup) | ||
return requests.post(f'{self.base}sendMessage', data=message) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be async/background process. Currently it blocks the whole server
* update ORM and added export for an event * update ORM and added export for an event * Added in app shareable events * docs: add type annotation and fix folder structure * docs: add type annotation and fix folder structure * docs: fix documentation * feat: get weather forecast for date and location * feat: get weather forecast for date and location * add: tests * set up commit * add: timezone support * add: session management * fix bug * split conftest file * split conftest file * move "utils" folder into "internal" folder * working day view with jinja2 template * with tests for pytest * feat: get weather forecast - fixes according to requested changes. * change file structure * feat: get weather forecast - fixes according to requested changes. * first functioning day-view html, css and router * feat: Basic responsive calender day view page Added dayview template with css and router. An tempreroy event class with, processing function for the day view to work. * feat: Basic responsive calender day view page Added dayview template with css and router. An tempreroy event class with, processing function for the day view to work. fixed after taking notes. * fix lint now for sure * more lint * feat: get weather forecast - fix requirements.txt * feat: enable invited users to view events * feat: flake8 changes * fix: requirements bug * fix: requirements bug * feat: flake8 changes * add: tests * feat: flake8 changes * add: tests * feat: flake8 changes * edit: file structure * edit: file structure * feat: get weather forecast - fix changes & add cache support * feat: get weather forecast - fix changes & add cache support * feat: get weather forecast - fix changes & add cache support * feat: add route tests * feat: get weather forecast - fix changes & add cache support * feat: get weather forecast - fix changes & add cache support * fix: test bug * remove: config.py * after all notes and started use the orm * fix: type annotation * feat: get weather forecast - add API mocking * feat: get weather forecast - add API mocking * feat: get weather forecast - add API mocking * feat: get weather forecast - add API mocking * fixed: changed "size" var in html and and more acuurate typing * deleted some testing lines * add requirements missing * add: minor changes * feat: flake8 changes * @hadaskedar2020 * feat: get weather forecast - add API mocking * feat: weather forecast - add API mocking & improve coverage * feat: weather forecast - add API mocking & improve coverage * feat: weather forecast - add API mocking & improve coverage * feat: weather forecast - add API mocking & improve coverage * feat: weather forecast - add API mocking & improve coverage * fixed: statements of event select more accurate * new test and lint fix * added more contants abd more notes taken * feat: weather forecast - move feat to internal * Delete Scripts directory * update constants * more notes * forgot white space * feat: gets a link to the suitable image of a given event content. (#70) * feat: gets a link to the suitable image of a given event content. * Add basic update event (#100) * Add basic update event * Added search feature (#98) * Added search feature * Add telegram client (#111) Add telegram client * feat: Add a feature for sharing information with a WhatsApp account (#83) * feat: Add a feature to share to a WhatsApp account * Feature/logging system (#112) * feat: first logging commit Co-authored-by: Liad Noam <[email protected]> * feat: add a daily inspirational quote (#128) * feat: add a daily inspirational quote * Feature/delete event (#139) * basic delete event * Add an event delete function * Fix flake8 * Deleting an unnecessary model * Extract lines from try * fix: modify psycopg2 dependency (#164) * Bugfix/logging system (#158) * Changed logging config to be received by separate parameters for simplicity, removed option to receive configuration as a dict, added .vscode to gitignore * removed logging_config file which is no longer needed * Fixing merge conflicts - missing whitespace on config.py.example Co-authored-by: Liad Noam <[email protected]> * Added checking for zoom link and saving the event (#122) * Added checking for zoom link and saving the event * Feature/import to calendar (#119) * feat: import file to calendar * docs: adding community standard documents (#173) * Feat: Event View Backend (#159) * Moved the route to top of file * Feature/send email (#88) * Added files for sending invitations by email This includes - templates - routes and internal code - configuration - tests Co-authored-by: leddest <[email protected]> Co-authored-by: Ellen <[email protected]> * Feature/translation - add an functionality to translate event data etc. (#167) * translation feature stuff * Update event - Improving the code (#138) * Add basic update event * Support categories for events (#137) * Support categories for events * Style/grid (#106) * Hello Wrold * Creating Html Template * Calendar dates calculation intigrating with html, HTML\CSS improvments. * Tests for calender_grid.py, changing function according to currections, fixing bugs * linting bug fixing * before merge with develop * Creating a Day object and days subclasses, changing all function and tests according to the new objects, Changing front to get information from Day objects, Re-arranging calendar.html grid stracture to be render by weeks, adding js functionality for day view section, adding css effects on daily event display * fix lintings * fix lintings * tests next week scroll * js updates * Calendar Scrolling with javascript * Fix lintings * Fix lintings * Calendar infinit scrolling ducplicates weeks bug fixed * seetings global parameters for calendar.py * Js - changing to fetch, removing jquery, fixing hint tpying, adding Week object, changing tests * Front end bug fixing * Fix linting * Fix lintings * Fix lintings * fixing syntax * Get user local date and time when enter calendar. * Fix lintings * Fix lintings * Fix lintings * Bugs fixing * Bugs fixing * Bugs fixing * Bugs fixing * JS alerts removal * Fix Lintings * Js syntext fixing * Bugs fixing * Bugs fixing * Js fixing varibales and adding div element to request. * Develop Update * Js - eliminate global parameters * Linting fixing * Fix Lintings * Fix flake8 * syntac fixing * Feature/translations workflow (#150) * feat: add translations workflow * fix(translations-workflow): fix doc * fix(translations-workflow): fixed code and added automatic commit Co-authored-by: Gonny <1@1> * Revert "Feature/translations workflow (#150)" (#208) This reverts commit 2e6a2c2. * feat: Add zodiac signs to the day & month view + refactor json data loader (#155) * feat: Add zodiac signs to the day/month view + * Change calendar link from '#' to '/' to get the home page (#194) when clicking on the logo * Style/grid (#200) * Js scrolling duplication days fixed Co-authored-by: Idan Pelled <[email protected]> Co-authored-by: Hadas Kedar <[email protected]> Co-authored-by: Sagi Zaid Or <[email protected]> Co-authored-by: sagizaidor <[email protected]> Co-authored-by: hadaskedar2020 <[email protected]> Co-authored-by: nir9696 <[email protected]> Co-authored-by: efratush <[email protected]> Co-authored-by: advaa123 <[email protected]> Co-authored-by: leddest <[email protected]> Co-authored-by: nelliei <[email protected]> Co-authored-by: Liad-n <[email protected]> Co-authored-by: Liad Noam <[email protected]> Co-authored-by: zohary89 <[email protected]> Co-authored-by: Ron Huberfeld <[email protected]> Co-authored-by: Ap1234567 <[email protected]> Co-authored-by: Nir-P <[email protected]> Co-authored-by: Ode <[email protected]> Co-authored-by: Anna Shtirberg <[email protected]> Co-authored-by: Ellen <[email protected]> Co-authored-by: ivarshav <[email protected]> Co-authored-by: Aviad <[email protected]> Co-authored-by: Gonzom <[email protected]> Co-authored-by: Gonny <1@1> Co-authored-by: YairEn <[email protected]>
No description provided.