Lets you unvote a specific comment (Requires login).

        Parameters:
            comment_id (int):
486228
def comment_unvote(self, comment_id):
        
        return self._get('posts/{0}/unvote.json'.format(comment_id),
                         method='POST', auth=True)
552587
def unvote
      security_transgression_unless @comment.can_be_voted_on_by?(@user)

      @comment.unvote voter: @user

      respond_to do |format|
        format.html { redirect_to @thread }
        format.js { render :vote }
      end
    end
175099
def lookup_comment_by_wordpress_id(self, comment_id, comments):
        
        for comment in comments:
            if comment.wordpress_id == comment_id:
                return comment
872250
def _remove_comment(line):
    
    # First find just quotes and their indexes.
    quote_indexes = []
    hash_indexes = []
    for i, ch in enumerate(line):
        if ch == '"':
            quote_indexes.append(i)
            if i > 0 and line[i - 1] == "\\":
                quote_indexes.pop()
        elif ch == '#':
            hash_indexes.append(i)

    comment_marker_index = -1
    for hash_index in hash_indexes:
        quote_index_ranges = [quote_indexes[i:i + 2] for i in range(0, len(quote_indexes), 2)]
        if not _check_index_within_index_pairs(hash_index, quote_index_ranges):
            comment_marker_index = hash_index
            break

    if comment_marker_index >= 0:
        line = line[:comment_marker_index]
    return line
746242
def flag(request, comment_id, next=None):
    
    comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)

    # Flag on POST
    if request.method == 'POST':
        perform_flag(request, comment)
        return next_redirect(request, fallback=next or 'comments-flag-done',
            c=comment.pk)

    # Render a form on GET
    else:
        return render_to_response('comments/flag.html',
            {'comment': comment, "next": next},
            template.RequestContext(request)
        )
244913
def uncomment_line(line, prefix):
    """"""
    if not prefix:
        return line
    if line.startswith(prefix + ' '):
        return line[len(prefix) + 1:]
    if line.startswith(prefix):
        return line[len(prefix):]
    return line
929248
def unfollow(self, user_id):
        
        return User(self._client.destroy_friendship(user_id=user_id)._json)
32262
def unsubscribe(self, email, id):
        
        self.db.execute([
            'UPDATE comments SET',
            '    notification=0',
            'WHERE email=? AND (id=? OR parent=?);'], (email, id, id))
599537
def get_comment(self, id):
        """"""
        url = self._base_url + "/3/comment/{0}".format(id)
        json = self._send_request(url)
        return Comment(json, self)
200343
def remove_this_opinion(self,opinion_id):
        
        for opi in self.get_opinions():
            if opi.get_id() == opinion_id:
                self.node.remove(opi.get_node())
                break
765390
def uncomment(key, value, tree)
      # Try to find if it is commented out, so we can replace line
      matcher = Matcher.new(
        collection:    "#comment",
        # FIXME: this assumes a specific "=" syntax, bypassing the lens
        # FIXME: this will match also "# If you set FOO=bar then..."
        value_matcher: /(\s|^)#{key}\s*=/
      )
      return false unless tree.data.any?(&matcher)

      # FIXME: this assumes that *data* is an AugeasTree
      tree.add(key, value, ReplacePlacer.new(matcher))
      true
    end
38612
def downvote
      security_transgression_unless @comment.can_be_voted_on_by?(@user) &&\
        @comment.thread.config.comment_voting.to_sym == :ld

      @comment.downvote_from @user

      respond_to do |format|
        format.html { redirect_to @thread }
        format.js { render :vote }
      end
    end
1116814
def comment_undelete(self, comment_id):
        
        return self._get('comments/{0}/undelete.json'.format(comment_id),
                         method='POST', auth=True)
200818
async function ensureCommentRemoval(prNo, topic) {
  try {
    logger.debug(`Ensuring comment "${topic}" in #${prNo} is removed`);
    const comments = await getComments(prNo);
    let commentId;
    comments.forEach(comment => {
      if (comment.text.startsWith(`### ${topic}\n\n`)) {
        commentId = comment.id;
      }
    });
    if (commentId) {
      await deleteComment(prNo, commentId);
    }
  } catch (err) /* istanbul ignore next */ {
    logger.warn({ err }, 'Error ensuring comment removal');
  }
}
969336
def suggestion_delete(self, account_id):
        
        account_id = self.__unpack_id(account_id)
        url = '/api/v1/suggestions/{0}'.format(str(account_id))
        self.__api_request('DELETE', url)
411150
def community_post_comment_delete(self, post_id, id, **kwargs):
        ""
        api_path = "/api/v2/community/posts/{post_id}/comments/{id}.json"
        api_path = api_path.format(post_id=post_id, id=id)
        return self.call(api_path, method="DELETE", **kwargs)
825240
def disconnect(self, id): # pylint: disable=invalid-name,redefined-builtin
        
        return self.service.post(self.base+str(id)+'/disconnect/')