UDA rejects Gachagua’s vote-rigging claims ahead of Ol Kalou by-election

United Democratic Alliance (UDA) Secretary General Hassan Omar speaks during a past event. (Photo: UDA)

Listen to article

4 min listen
Audio reading is not supported on this browser.
Ready

Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.

KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election

Rachael Mutabasi

 · 

5 hours agoRead nextOpens a fresh page.

UDA’s response came after Gachagua wrote to IEBC Chair Erastus Ethekon on Tuesday, citing bribery allegations by senior Kenya Kwanza government officials during campaigns.

The United Democratic Alliance (UDA) has rejected claims by Democratic Congress Party (DCP) leader Rigathi Gachagua that Thursday’s Ol Kalou parliamentary by-election could be manipulated, saying the allegations lack evidence and urging the Independent Electoral and Boundaries Commission (IEBC) to conduct the poll in accordance with the law.
UDA’s response came after Gachagua wrote to IEBC Chair Erastus Ethekon on Tuesday, citing bribery allegations by senior Kenya Kwanza government officials during campaigns. Gachagua also alleged an elaborate scheme to manipulate the by-election through interference with polling, vote counting, security operations and voter identification procedures.
In a separate letter addressed to Inspector General of Police Douglas Kanja earlier on Wednesday, Gachagua similarly raised concerns over police deployment, alleged intimidation of his party’s supporters and the conduct of security officers ahead of the by-election.

More To Read

  • KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
  • 𝐄𝐚𝐬𝐭𝐥𝐞𝐢𝐠𝐡 𝐕𝐨𝐢𝐜𝐞 𝐚𝐭 𝐍𝐢𝐧𝐞 – All set for Ol Kalou by-election as IEBC deploys voting materials
  • IEBC outlines voting process ahead of Ol Kalou by-election
  • IEBC defends failure to punish early campaigns, cites legal limits
  • ELOG flags widespread voter bribery, campaign malpractice ahead of Ol Kalou by-election
  • Ol Kalou by-election: Gachagua demands police officers wear uniforms, use marked vehicles

In his letter, Gachagua claimed the National Police Service (NPS) had come under the influence of senior figures in the Kenya Kwanza administration. He also questioned the deployment of more than 2,000 police officers to Ol Kalou, calling for all officers assigned to election duties to be in uniform, display their service numbers and use clearly marked police vehicles.
Gachagua further alleged that some officers had been deployed to interfere with the electoral process and cited several incidents he said targeted DCP officials and supporters during the campaign period.
In a rejoinder addressed to IEBC Chair Ethekon, UDA rejected Gachagua’s claims, arguing that they were unsupported and intended to undermine confidence in the electoral process. According to UDA, the allegations of bribery, voter intimidation or electoral interference should be pursued through established legal channels rather than through public accusations.

Latest Stories

  • Sierra Leone drops treason charges against former President Ernest Bai Koroma over health concerns
  • Public universities grapple with Sh28.9 billion funding gap as delayed capitation bites
  • KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
  • 𝐄𝐚𝐬𝐭𝐥𝐞𝐢𝐠𝐡 𝐕𝐨𝐢𝐜𝐞 𝐚𝐭 𝐍𝐢𝐧𝐞 – All set for Ol Kalou by-election as IEBC deploys voting materials

“Where it exists, admissible evidence of bribery or undue influence should be addressed through lawful structures, not by a scattergun letter to the IEBC,” UDA said in the letter signed by Secretary General Hassan Omar.
UDA also defended IEBC against allegations that it could collude in manipulating the outcome of the by-election, stressing that election officials carry out their duties under scrutiny from party agents and election observers.
“The suggestion that the IEBC would collude in disenfranchising young voters or rigging KIEMS tallies is not only baseless but an insult to the patriotic election officials who conduct these exercises under intense scrutiny from party agents and observers of all persuasions,” the party said.
Further, UDA dismissed claims that senior government officials were involved in planning to influence the outcome of the by-election, saying no evidence had been provided to support the allegations. UDA also maintained that deployment of security personnel is the responsibility of the NPS under the command of the Inspector General and not the IEBC.
UDA subsequently urged the IEBC to proceed with the Ol Kalou by-election despite the political claims surrounding the vote.
“We urge the IEBC to conduct the Ol Kalou Constituency by-election professionally, transparently and in accordance with the law, without acquiescing to blackmail, ultimatums, theatrics or the politics of manufactured crisis,” the party said.

Other Topics To Read

Top Stories Today

  • Public universities grapple with Sh28.9 billion funding gap as delayed capitation bites
  • Sierra Leone withdraws treason case against ex-president Koroma
  • KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
  • Taifa Care gets major boost as Kenya, US sign Sh206.9 billion deal
  • Government resolves Harambee Starlets allowance row, players receive dues
  • Besigye rejects court-appointed lawyers in ongoing treason case

`;
}

return “;
}

function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;

const likeButton = canComment && comment.status === ‘approved’
? “
: “;

const replyButton = canComment && comment.status === ‘approved’
? “
: ”;

return `

`;
}

function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;

const edited = comment.is_edited
? “
: ”;

const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `

`
: “;

return `

`;
}

function replyFormMarkup(commentId) {
return `

`;
}

function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;

if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}

notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}

function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;

const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}

function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});

const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;

const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;

replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);

const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}

function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}

async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};

const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);

async function loadComments(reset = true) {
if (state.busy) return;

state.busy = true;
setNotice(widget, ”);
loading.hidden = false;

if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}

try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);

const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});

const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};

state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;

setCount(widget, state.total);

if (reset) {
list.innerHTML = ”;
}

if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}

loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}

async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);

if (!textarea) return;

const content = textarea.value.trim();
if (!content) return;

const originalText = button ? button.textContent : ”;

try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}

const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});

textarea.value = ”;

if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;

if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}

setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}

async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);

if (!commentId || !textarea) return;

const content = textarea.value.trim();
if (!content) return;

const originalText = button ? button.textContent : ”;

try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}

const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});

if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}

closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}

async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;

const originalHtml = button.innerHTML;

try {
button.disabled = true;
button.innerHTML = ‘Working…’;

const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});

const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);

button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}

if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}

if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}

if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}

widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}

const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}

const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});

widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});

loadComments(true);
}

document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();

Trending

Social media likes may have a bigger impact on people with depression, study findsHealth
|Charity Kilei
|11 hours ago

Fish oil supplements may not protect memory, new study suggestsHealth
|Charity Kilei
|8 hours ago

Sierra Leone drops treason charges against former President Ernest Bai Koroma over health concernsAfrica
|Rachael Mutabasi
|3 hours ago

Senate petition seeks to bar repeat nominations and limit MCAs to one termPolitics
|Rachael Mutabasi
|7 hours ago

Besigye rejects court-appointed lawyers in ongoing treason caseUganda
|Bashir Mbuthia
|6 hours ago

Nairobi’s Eastleigh, GPO, Makadara and Kibra among 20 Huduma Centres to have extended operating hoursNews
|Rachael Mutabasi
|9 hours ago
UDA rejects Gachagua’s vote-rigging claims ahead of Ol Kalou by-electionPolitics
|Bashir Mbuthia
|10 hours ago
HPV vaccine cuts cervical cancer deaths by nearly 80 per cent, landmark study findsHealth
|Charity Kilei
|9 hours ago

<img src="https://absafricatv.com/wp-content/uploads/2026/07/Ogamba-CS-600×600-1.jpg" alt="Education CS Ogamba says TVET capitation delays caused by Treasury funding shortfalls”>

Education CS Ogamba says TVET capitation delays caused by Treasury funding shortfallsEducation
|Lucy Mumbi
|8 hours ago

Kenya opens diplomatic mission in Jamaica, expanding Caribbean presenceNews
|Mwangi Maina
|12 hours ago

Share.
Leave A Reply

Exit mobile version