From a50dba2b4cb7bfb22f9a42be37ed4c9c3773bf84 Mon Sep 17 00:00:00 2001
From: Dan <14043624+delivrance@users.noreply.github.com>
Date: Sat, 5 Jan 2019 14:44:10 +0100
Subject: [PATCH] Add close_poll method
---
pyrogram/client/methods/messages/__init__.py | 2 +
.../client/methods/messages/close_poll.py | 65 +++++++++++++++++++
2 files changed, 67 insertions(+)
create mode 100644 pyrogram/client/methods/messages/close_poll.py
diff --git a/pyrogram/client/methods/messages/__init__.py b/pyrogram/client/methods/messages/__init__.py
index d5d81044..f76d0a22 100644
--- a/pyrogram/client/methods/messages/__init__.py
+++ b/pyrogram/client/methods/messages/__init__.py
@@ -16,6 +16,7 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from .close_poll import ClosePoll
from .delete_messages import DeleteMessages
from .download_media import DownloadMedia
from .edit_message_caption import EditMessageCaption
@@ -70,6 +71,7 @@ class Messages(
SendVoice,
SendPoll,
VotePoll,
+ ClosePoll,
RetractVote,
DownloadMedia,
IterHistory
diff --git a/pyrogram/client/methods/messages/close_poll.py b/pyrogram/client/methods/messages/close_poll.py
new file mode 100644
index 00000000..c2d2706b
--- /dev/null
+++ b/pyrogram/client/methods/messages/close_poll.py
@@ -0,0 +1,65 @@
+# Pyrogram - Telegram MTProto API Client Library for Python
+# Copyright (C) 2017-2019 Dan Tès
+#
+# This file is part of Pyrogram.
+#
+# Pyrogram is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pyrogram is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Pyrogram. If not, see .
+
+from typing import Union
+
+from pyrogram.api import functions, types
+from pyrogram.client.ext import BaseClient
+
+
+class ClosePoll(BaseClient):
+ def close_poll(self,
+ chat_id: Union[int, str],
+ message_id: id) -> bool:
+ """Use this method to close (stop) a poll.
+
+ Closed polls can't be reopened and nobody will be able to vote in it anymore.
+
+ Args:
+ chat_id (``int`` | ``str``):
+ Unique identifier (int) or username (str) of the target chat.
+ For your personal cloud (Saved Messages) you can simply use "me" or "self".
+ For a contact that exists in your Telegram address book you can use his phone number (str).
+
+ message_id (``int``):
+ Unique poll message identifier inside this chat.
+
+ Returns:
+ On success, True is returned.
+
+ Raises:
+ :class:`Error ` in case of a Telegram RPC error.
+ """
+ poll = self.get_messages(chat_id, message_id).poll
+
+ self.send(
+ functions.messages.EditMessage(
+ peer=self.resolve_peer(chat_id),
+ id=message_id,
+ media=types.InputMediaPoll(
+ poll=types.Poll(
+ id=poll.id,
+ closed=True,
+ question="",
+ answers=[]
+ )
+ )
+ )
+ )
+
+ return True